Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pembangunan dan pelaksanaan crawler: PHP dan strategi praktikal Selenium

Pembangunan dan pelaksanaan crawler: PHP dan strategi praktikal Selenium

PHPz
PHPzasal
2023-06-16 08:41:281518semak imbas

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.

Apakah Selenium?

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.

Persediaan sebelum pembangunan perangkak

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

Contoh mudah: Dapatkan tajuk halaman web

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:

  1. Pertama, gunakan require_once untuk memperkenalkan perpustakaan kelas yang diperlukan fail.
  2. Gunakan DesiredCapabilities untuk mencipta pemacu penyemak imbas, dengan menyatakan penyemak imbas Chrome.
  3. Gunakan RemoteWebDriver::create untuk melancarkan penyemak imbas Chrome dan menyambung ke pelayan Selenium.
  4. Gunakan kaedah get untuk membuka halaman web yang perlu menangkap data.
  5. Gunakan kaedah getTitle untuk mendapatkan tajuk halaman.
  6. Keluarkan tajuk halaman.
  7. Akhir sekali, gunakan kaedah quit untuk menutup penyemak imbas Chrome.

Contoh mudah: log masuk ke halaman web dan merangkak data

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:

  1. Pertama, gunakan require_once untuk memperkenalkan fail perpustakaan kelas yang diperlukan.
  2. Gunakan DesiredCapabilities untuk mencipta pemacu penyemak imbas, dengan menyatakan penyemak imbas Chrome.
  3. Gunakan RemoteWebDriver::create untuk melancarkan penyemak imbas Chrome dan menyambung ke pelayan Selenium.
  4. Gunakan kaedah get untuk membuka halaman yang memerlukan log masuk.
  5. Gunakan kaedah 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.
  6. Gunakan kaedah findElement untuk mendapatkan objek WebElement yang sepadan melalui id butang serah dan panggil kaedah click untuk mengklik untuk melengkapkan operasi log masuk.
  7. Gunakan kaedah wait untuk menunggu tajuk selepas lompatan halaman mengandungi Homepage.
  8. Gunakan kaedah get untuk membuka halaman yang perlu menangkap data.
  9. Gunakan kaedah findElement untuk mendapatkan objek WebElement yang sepadan melalui pemilih CSS dan gunakan kaedah getText untuk mendapatkan kandungan teks.
  10. Keluarkan data yang diperoleh.
  11. Akhir sekali, gunakan kaedah 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.

Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn