Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara cepat melaksanakan perangkak automatik menggunakan PHP dan Selenium

Cara cepat melaksanakan perangkak automatik menggunakan PHP dan Selenium

王林
王林asal
2023-06-16 09:15:521660semak imbas

Dengan perkembangan Internet, teknologi crawler digunakan secara meluas dalam semua lapisan masyarakat. Perangkak automatik digunakan secara meluas dalam pengumpulan data dan ujian tapak web. Artikel ini akan memperkenalkan cara melaksanakan perangkak automatik menggunakan PHP dan Selenium dengan cepat.

1. Pengenalan kepada Selenium

Selenium ialah alat ujian automatik yang digunakan secara meluas untuk menguji aplikasi web. Selenium IDE ialah alat ujian aplikasi web, dan Selenium WebDriver ialah alat ujian automatik dipacu pelayar yang menyediakan antara muka untuk banyak bahasa pengaturcaraan, termasuk Java, C#, Python dan PHP.

Selenium WebDriver diuji berdasarkan penyemak imbas Ia boleh mengawal gelagat penyemak imbas dan mensimulasikan gelagat operasi pengguna aplikasi web. Menggunakan Selenium WebDriver, kami boleh melakukan ujian automasi web dan pengumpulan data web dengan mudah.

2. PHP menggunakan Selenium WebDriver

Pasang Selenium WebDriver untuk PHP

Pertama, kita perlu memasang Selenium WebDriver untuk PHP. Selenium WebDriver untuk PHP boleh dipasang dengan mudah menggunakan Composer. Cipta fail composer.json dalam direktori akar projek anda dan tambahkan kandungan berikut:

{

"name": "myproject",
"description": "Using Selenium WebDriver for PHP",
"require": {
    "php-webdriver/webdriver": "~1.4.0"
}

}

Selepas menyimpan fail, anda boleh memasangnya dengan memasukkan arahan berikut pada baris arahan:

composer install

Ini akan memasang komponen yang diperlukan secara automatik.

Menggunakan Selenium WebDriver untuk PHP

Selepas pemasangan selesai, kita boleh mula menggunakan Selenium WebDriver untuk PHP untuk ujian automatik dan pengumpulan data Web. Mula-mula, kita perlu memperkenalkan kelas pelaksanaan WebDriver:

require_once 'vendor/autoload.php';

gunakan FacebookWebDriverRemoteCapabilities;
gunakan FacebookWebDriverRemoteWebDriverRemote.php; 🎜 >
Di sini kami menggunakan perpustakaan WebDriver untuk PHP yang dibangunkan oleh Facebook dan melaksanakannya dengan memperkenalkan kod di atas.

Kini, kami boleh menggunakan antara muka RemoteWebDriver untuk menyambung ke penyemak imbas untuk operasi automatik.

$host = 'http://localhost:4444/wd/hub';

$capabilities = array(WebDriverBrowserType::CHROME);

$driver = RemoteWebDriver::create($host , New Capabilities($capabilities));

Di sini, kami memilih penyemak imbas Chrome dan menyambung ke penyemak imbas melalui kaedah cipta Kemudian kami boleh menggunakan antara muka WebDriver untuk memanggil kaedah penyemak imbas untuk melaksanakan ujian automatik dan Web Data dikumpul.

3. Laksanakan perangkak automatik

Seterusnya, kami menggunakan Selenium WebDriver untuk PHP untuk melaksanakan perangkak automatik.

Tentukan tapak web sasaran
  1. Pertama, kita perlu menentukan tapak web sasaran yang perlu dirangkak. Di sini kami mengambil "Rangkaian Keju" sebagai contoh Laman web ini menyediakan tontonan dalam talian percuma koleksi lengkap filem Hong Kong dan Taiwan Kami perlu mendapatkan maklumat sumber filem dan televisyen dalam laman web ini.

Sahkan sasaran merangkak
  1. Sebelum merangkak data, kami perlu mengesahkan data yang perlu dirangkak. Dalam contoh ini, kita perlu mendapatkan tajuk filem dan televisyen, pengarah, pelakon, tahun, ringkasan plot dan maklumat lain.

Tulis kod
  1. Selepas mengesahkan matlamat, kami boleh menulis kod yang berkaitan. Kod berikut adalah untuk mendapatkan maklumat terperinci bagi nama filem yang ditentukan:

$movieName = 'YourMovieName';

// Contoh RemoteWebDriver baharu untuk disambungkan dengan penyemak imbas Chrome

$browser = RemoteWebDriver::create ($host, new Capabilities($capabilities));

$browser->manage()->timeouts()->implicitly Wait(10);

// Buka tapak web sasaran

$browser->get('http://www.zhishi8.com/film/')


// Cari kotak carian dan serahkan pertanyaan

$searchBox = $browser-> ;findElement(WebDriverBy::id('wd'));

$searchBox->sendKeys($movieName);
$searchBox->submit();

// Tunggu halaman hasil dimuatkan

$browser->wait()->until(

WebDriverExpectedCondition::titleContains($movieName)

);

// Klik pautan filem yang ditemui dan tunggu halaman butiran untuk dimuatkan

$movieLink = $browser->findElement(WebDriverBy::xpath("//a[contains(@href, '/film/{$name}.html')]"));

$ movieLink->click();
$browser->tunggu()->sehingga(

WebDriverExpectedCondition::titleContains($movieName)

);

// Dapatkan maklumat terperinci filem

$ movieDirector = $browser->findElement(WebDriverBy::xpath("//p[contains(@class, 'lh30') and contains(text(), 'director')]"))-> getText();

$movieActor = $browser->findElement(WebDriverBy::xpath("//p[contains(@class, 'lh30') dan contains(text(), 'starring')]") )-> getText();
$movieYear = $browser->findElement(WebDriverBy::xpath("//p[contains(@class, 'lh30') dan contains(text(), 'Year' )]") )->getText();
$movieDetail = $browser->findElement(WebDriverBy::xpath("//p[contains(@class, 'txt lh25')]))-> ;getText() ;

// Output hasil

gema "Nama Filem: {$movieName}

";
gema "Pengarah: {$movieDirector}
";
gema " Pelakon: {$movieActor}
";
gema "Tahun: {$movieYear}
";
gema "Butiran: {$movieDetail}
";

Lulus Dengan PHP dan Selenium, kami boleh melaksanakan perangkak automatik dengan mudah untuk mendapatkan data yang kami perlukan.

4

Artikel ini memperkenalkan cara untuk melaksanakan perangkak automatik menggunakan PHP dan Selenium dengan cepat. Pertama, kami memperkenalkan pengetahuan asas dan kaedah pemasangan Selenium WebDriver. Kemudian, kami menerangkan cara menggunakan PHP dan Selenium WebDriver untuk melaksanakan perangkak automatik melalui contoh. Akhir sekali, kami meringkaskan kandungan artikel ini dan berharap ia akan membantu anda.

Atas ialah kandungan terperinci Cara cepat melaksanakan perangkak automatik menggunakan PHP dan 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