Dengan pembangunan Internet yang berterusan, semakin banyak data perlu diperolehi daripada halaman web Tidak seperti penyemakan imbas halaman web secara manual untuk membaca maklumat, teknologi perangkak boleh mendapatkan data secara automatik. Dalam teknologi perangkak, Selenium ialah alat ujian automatik yang boleh mensimulasikan pengguna yang beroperasi pada halaman web dan mendapatkan data pada halaman web. Artikel ini akan memperkenalkan cara menggunakan PHP dan Selenium untuk melaksanakan fungsi perangkak.
Selenium ialah alat ujian automatik yang boleh mensimulasikan semua operasi pengguna pada halaman web, seperti input, klik, tatal, dsb., dan juga boleh mendapatkan data pada halaman web. Selenium boleh menyokong berbilang penyemak imbas, seperti Chrome, Firefox, Edge, dll., dan boleh menggunakan bahasa yang berbeza untuk menulis skrip ujian. Dalam teknologi perangkak, Selenium boleh mensimulasikan pengguna yang mengendalikan halaman web dan merangkak data daripada halaman web.
Sebelum menggunakan Selenium untuk pembangunan perangkak, anda perlu memasang pemacu penyemak imbas yang menyokong Selenium, seperti pemacu penyemak imbas Chrome. Anda boleh memuat turun versi terkini pemacu Chrome dari tapak web rasmi Selenium dan memasangnya.
Seterusnya, anda perlu memasang PHP dan sambungan yang berkaitan secara setempat, seperti php-webdriver. Anda boleh menggunakan Komposer untuk memasangnya, seperti yang ditunjukkan di bawah:
composer require php-webdriver/webdriver
Langkah pertama dalam menggunakan Selenium untuk pembangunan perangkak ialah membuka halaman web yang perlu merangkak data. Katakan kita perlu mendapatkan tajuk halaman web, kita boleh mengikuti langkah berikut:
<?php require_once 'vendor/autoload.php'; use FacebookWebDriverRemoteDesiredCapabilities; use FacebookWebDriverRemoteRemoteWebDriver; // 启动Chrome浏览器 $capabilities = DesiredCapabilities::chrome(); $driver = RemoteWebDriver::create('http://localhost:9515', $capabilities); // 打开需要抓取数据的网页 $driver->get('https://www.example.com'); // 获取网页标题 $title = $driver->getTitle(); echo $title; // 关闭浏览器 $driver->quit();
Analisis kod:
require_once
untuk memperkenalkan perpustakaan kelas yang diperlukan fail. DesiredCapabilities
untuk mencipta pemacu penyemak imbas, dengan menyatakan penyemak imbas Chrome. RemoteWebDriver::create
untuk melancarkan penyemak imbas Chrome dan menyambung ke pelayan Selenium. get
untuk membuka halaman web yang perlu menangkap data. getTitle
untuk mendapatkan tajuk halaman. quit
untuk menutup penyemak imbas Chrome. Dalam pembangunan perangkak sebenar, kita mungkin perlu log masuk ke halaman web untuk mendapatkan data yang diperlukan. Berikut ialah contoh kod untuk log masuk ke tapak web dan merebut data:
<?php require_once 'vendor/autoload.php'; use FacebookWebDriverRemoteDesiredCapabilities; use FacebookWebDriverRemoteRemoteWebDriver; use FacebookWebDriverWebDriverBy; // 启动Chrome浏览器 $capabilities = DesiredCapabilities::chrome(); $driver = RemoteWebDriver::create('http://localhost:9515', $capabilities); // 打开登录页面 $driver->get('https://www.example.com/login'); // 输入账号密码并登录 $accountInput = $driver->findElement(WebDriverBy::id('account')); $passwordInput = $driver->findElement(WebDriverBy::id('password')); $submitButton = $driver->findElement(WebDriverBy::id('submit')); $accountInput->sendKeys('your_username'); $passwordInput->sendKeys('your_password'); $submitButton->click(); // 等待登录成功并打开需要抓取数据的页面 $driver->wait(10)->until( WebDriverExpectedCondition::titleContains('Homepage') ); $driver->get('https://www.example.com/data'); // 获取数据 $data = $driver->findElement(WebDriverBy::cssSelector('.data'))->getText(); echo $data; // 关闭浏览器 $driver->quit();
Analisis kod:
require_once
untuk memperkenalkan fail perpustakaan kelas yang diperlukan. DesiredCapabilities
untuk mencipta pemacu penyemak imbas, dengan menyatakan penyemak imbas Chrome. RemoteWebDriver::create
untuk melancarkan penyemak imbas Chrome dan menyambung ke pelayan Selenium. get
untuk membuka halaman yang memerlukan log masuk. findElement
untuk mendapatkan objek WebElement yang sepadan melalui id elemen input akaun dan kata laluan, dan panggil kaedah sendKeys
untuk menghantar kata laluan akaun untuk input. findElement
untuk mendapatkan objek WebElement yang sepadan melalui id butang serah dan panggil kaedah click
untuk mengklik untuk melengkapkan operasi log masuk. wait
untuk menunggu tajuk selepas lompatan halaman mengandungi Homepage
. get
untuk membuka halaman yang perlu menangkap data. findElement
untuk mendapatkan objek WebElement yang sepadan melalui pemilih CSS dan gunakan kaedah getText
untuk mendapatkan kandungan teks. quit
untuk menutup penyemak imbas Chrome. Di atas ialah kod sampel Dalam pembangunan sebenar, ia perlu diubah suai mengikut struktur halaman dan ID elemen tapak web tertentu.
Artikel ini memperkenalkan cara menggunakan PHP dan Selenium untuk pembangunan perangkak, dan menyediakan contoh tunjuk cara daripada dua aspek: mendapatkan tajuk halaman web dan log masuk untuk merangkak data. Sebagai alat ujian automatik, Selenium boleh mensimulasikan operasi pengguna pada halaman web, memudahkan penangkapan data dalam halaman web, dan juga boleh digunakan dalam senario ujian automatik yang lain. Dengan menguasai penggunaan Selenium, anda boleh meningkatkan tahap teknikal dan kecekapan kerja anda.
Atas ialah kandungan terperinci Pembangunan dan pelaksanaan crawler: PHP dan strategi praktikal Selenium. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!