Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan praktikal untuk perangkak web automatik: membina perangkak web dengan PHP dan Selenium

Panduan praktikal untuk perangkak web automatik: membina perangkak web dengan PHP dan Selenium

WBOY
WBOYasal
2023-06-15 16:44:571522semak imbas

Perangkak web telah menjadi salah satu alat yang paling penting dalam dunia Internet hari ini Mereka boleh menyemak imbas pelbagai tapak web secara automatik di Internet dan mengekstrak maklumat berguna yang diperlukan oleh orang ramai. Teknologi teras perangkak web automatik adalah menggunakan bahasa pengaturcaraan dan pelbagai alat untuk membina program yang boleh memproses data secara automatik.

Dalam beberapa tahun kebelakangan ini, Selenium telah menjadi salah satu alat yang paling popular dalam bidang merangkak web automatik. Ia ialah alat ujian automatik merentas pelayar yang boleh mensimulasikan pengguna yang melakukan pelbagai operasi dalam penyemak imbas, seperti mengklik, menatal, menaip, dsb., dan juga boleh mendapatkan data daripada halaman web. Ini menjadikan Selenium sesuai untuk membina perangkak web automatik, kerana ia membolehkan program mendapatkan data dengan cara yang sama seperti pengguna biasa.

Artikel ini akan memperkenalkan cara membina perangkak web automatik menggunakan PHP dan Selenium. Program perangkak yang diperkenalkan dalam artikel ini akan menyemak imbas tapak web yang ditentukan secara automatik dan mengeluarkan maklumat yang berkaitan seperti tajuk, pengarang, tarikh penerbitan dan pautan artikel semua artikel, dan akhirnya menyimpannya ke fail CSV.

Sebelum kita mula, kita perlu memasang PHP, Selenium dan WebDriver (sepadan dengan pemacu penyemak imbas). Berikut ialah butiran artikel ini:

  1. Tetapan persekitaran dan konfigurasi asas

Pertama, kita perlu memasang PHP dalam persekitaran setempat. PHP 7 atau lebih tinggi adalah disyorkan. Seterusnya, untuk memasang Selenium, anda boleh melakukannya menggunakan Komposer. Gunakan arahan komposer dalam folder projek untuk memasangnya Selepas pemasangan berjaya, kita boleh mula menulis program PHP.

  1. Panggil WebDriver dan Selenium API

Sebelum menggunakan Selenium untuk membina perangkak web automatik, kami perlu memanggil WebDriver dan mencipta contoh WebDriver untuk berkomunikasi dengan penyemak imbas yang ditentukan. WebDriver ialah antara muka pemacu penyemak imbas, dan penyemak imbas yang berbeza memerlukan WebDriver yang berbeza.

Dalam PHP, kami boleh menggunakan perpustakaan klien PHP Selenium untuk mencipta tika WebDriver dan mengikatnya dengan WebDriver penyemak imbas yang ditentukan. Berikut ialah contoh kod:

require_once 'vendor/autoload.php';
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

// 配置浏览器类型、路径、驱动、和端口
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
  1. Mewujudkan sesi penyemak imbas dan membuka tapak web sasaran

Mencipta sesi penyemak imbas hanya memerlukan satu baris kod, dan kita boleh memilih penyemak imbas kegemaran kami ( Firefox atau Chrome).

Di sini kita akan menggunakan penyemak imbas Chrome. Berikut ialah kod contoh:

// 使用Chrome浏览器打开目标网站
$driver->get('https://example.com');
  1. Cari dan ekstrak data

Selepas membuka tapak web sasaran dan memuatkan halaman, kami perlu mencari dan mendapatkan elemen yang diperlukan data. Dalam contoh ini, kami akan menemui tajuk, pengarang, tarikh penerbitan dan pautan artikel semua artikel dalam tapak web sasaran.

Berikut ialah contoh kod:

// 查找所有文章标题
$titles = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

// 查找作者名字
$author_names = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .author-name'));

// 查找发布日期
$release_dates = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .release-date'));

// 查找文章链接
$links = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

Berikut ialah contoh kod untuk mencari dan mengekstrak data bagi setiap artikel:

$articles = array();

foreach ($titles as $key => $title) {
    // 提取标题
    $article_title = $title->getText();

    // 提取作者
    $article_author = $author_names[$key]->getText();

    // 提取发布日期
    $article_date = $release_dates[$key]->getText();

    // 提取文章链接
    $article_link = $links[$key]->getAttribute('href');

    // 添加文章到数组
    $articles[] = array(
        'title' => $article_title,
        'author' => $article_author,
        'date' => $article_date,
        'link' => $article_link
    );
}
  1. Hasilnya disimpan ke fail CSV

Langkah terakhir ialah menyimpan data yang diekstrak ke fail CSV. Data boleh disimpan ke dalam fail CSV menggunakan fungsi terbina dalam PHP fputcsv().

Berikut ialah kod sampel:

// 文件流方式打开文件
$file = fopen('articles.csv', 'w');

// 表头
$header = array('Title', 'Author', 'Date', 'Link');

// 写入标题
fputcsv($file, $header);

// 写入文章数据
foreach ($articles as $article) {
    fputcsv($file, $article);
}

// 关闭文件流
fclose($file);

Ini menamatkan pengekstrakan kandungan dan pemprosesan data. Data dalam fail CSV boleh digunakan untuk analisis dan aplikasi seterusnya. Di samping itu, data boleh diimport ke pangkalan data lain untuk pemprosesan selanjutnya.

Ringkasnya, dalam artikel ini, kami telah mempelajari cara membina perangkak web automatik menggunakan PHP dan Selenium, dan cara mendapatkan serta memproses data tapak web sasaran dan menyimpannya ke dalam fail CSV. Contoh ini hanyalah demonstrasi mudah, yang boleh digunakan untuk pelbagai senario di mana data perlu diperoleh daripada laman web, seperti SEO, analisis produk kompetitif, dll.

Atas ialah kandungan terperinci Panduan praktikal untuk perangkak web automatik: membina perangkak web dengan 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