Dengan perkembangan pesat Internet, orang ramai semakin bergantung kepada Internet dan perlu mendapatkan pelbagai maklumat daripada Internet. Pada masa lalu, carian manual atau mengikis data secara manual adalah tugas yang membosankan, tetapi kini, dengan bantuan teknologi perangkak web, kami boleh mendapatkan semua jenis maklumat dengan mudah. Perangkak web ialah program yang secara automatik mendapatkan maklumat daripada Internet Tujuan utamanya adalah untuk mengekstrak data dari pelbagai tempat seperti laman web, enjin carian dan rangkaian sosial.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Selenium untuk mencipta perangkak web yang paling cekap. Selenium ialah alat ujian automatik, terutamanya digunakan untuk mensimulasikan tingkah laku pengguna dalam penyemak imbas, manakala PHP ialah bahasa pengaturcaraan yang sangat popular dan juga digunakan secara meluas dalam bidang perangkak web. Menggabungkan kedua-dua ini, kami boleh membangunkan perangkak web yang cekap dan boleh dipercayai.
Sebelum menggunakan Selenium, kita perlu memasangnya terlebih dahulu. Selenium menyediakan sokongan untuk berbilang bahasa, termasuk Java, Python, Ruby, dll., dan dalam artikel ini, kami akan menggunakan bahasa PHP untuk demonstrasi. Untuk langkah pemasangan Selenium, anda boleh melihat dokumentasi rasmi (https://www.selenium.dev/documentation/en/), yang tidak akan diulang di sini.
Untuk menggunakan Selenium, kami perlu memasang pemacu penyemak imbas. Dalam artikel ini, kami akan menggunakan penyemak imbas Chrome sebagai contoh, jadi anda perlu memasang penyemak imbas Chrome terlebih dahulu. Anda boleh memuat turun versi terkini penyemak imbas Chrome dari tapak web rasmi penyemak imbas Chrome (https://www.google.com/chrome/). Selepas pemasangan selesai, kami juga perlu memasang versi ChromeDriver yang sepadan ialah alat yang digunakan dengan penyemak imbas Chrome untuk berkomunikasi dengan Selenium. Mengenai pemasangan dan penggunaan ChromeDriver, anda juga boleh melihat dokumentasi rasmi (https://sites.google.com/a/chromium.org/chromedriver/).
Sebelum membangunkan perangkak web, kita perlu terlebih dahulu menjelaskan perkara yang ingin kita rangkak dan menentukan perpustakaan yang ingin kita gunakan. Dalam artikel ini, kami akan mengambil merangkak halaman utama Zhihu sebagai contoh dan menggunakan perpustakaan Goutte PHP dan perpustakaan Selenium untuk mendapatkan maklumat.
Pertama, kami menggunakan perpustakaan Goutte untuk mendapatkan kod sumber HTML halaman utama Zhihu:
require_once __DIR__ . '/vendor/autoload.php'; use GoutteClient; $client = new Client(); $crawler = $client->request('GET', 'https://www.zhihu.com/'); $html = $crawler->html(); echo $html;
Seterusnya, kami menggunakan perpustakaan Selenium untuk mensimulasikan tingkah laku pengguna dalam penyemak imbas dan mendapatkan web halaman menentukan elemen dalam .
require_once __DIR__ . '/vendor/autoload.php'; use FacebookWebDriverRemoteRemoteWebDriver; use FacebookWebDriverWebDriverBy; use FacebookWebDriverWebDriverExpectedCondition; $host = 'http://localhost:4444/wd/hub'; // 远程WebDriver服务的地址 $driver = RemoteWebDriver::create($host, array( 'browserName' => 'chrome' )); $driver->get('https://www.zhihu.com/'); // 在搜索框中输入关键词,并点击搜索按钮 $searchBox = $driver->findElement(WebDriverBy::id('Popover1-toggle')); $searchBox->click(); $searchInput = $driver->findElement(WebDriverBy::xpath('//input[@placeholder="搜索话题、问题或人"]')); $searchInput->sendKeys('PHP'); $searchButton = $driver->findElement(WebDriverBy::xpath('//button[@class="Button SearchBar-searchButton Button--primary"]')); $searchButton->click(); // 等待搜索结果页面加载完毕 $wait = new FacebookWebDriverWebDriverWait($driver, 10); $element = $wait->until(WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::id('SearchMain'))); $html = $driver->getPageSource(); echo $html; $driver->quit();
Dalam kod di atas, kami mensimulasikan proses pengguna mencari kata kunci "PHP" di tapak web Zhihu dan memperoleh kod sumber HTML halaman hasil carian. Selepas mendapat kod sumber HTML, kita boleh menggunakan pelbagai kaedah untuk menganalisis dan memprosesnya untuk mendapatkan maklumat yang diperlukan.
Semasa operasi merangkak, kami sering menghadapi pelbagai sekatan, seperti sekatan kekerapan akses, kod pengesahan, dsb. Untuk meningkatkan kecekapan merangkak, kami boleh menggunakan kaedah berikut:
Pelaksanaan khusus kaedah di atas tidak akan diterangkan di sini.
Dalam artikel ini, kami memperkenalkan cara menggunakan PHP dan Selenium untuk membangunkan perangkak web yang cekap dan boleh dipercayai. Dengan menggunakan kaedah seperti pemprosesan tak segerak, IP proksi dan caching, kecekapan merangkak boleh dipertingkatkan lagi dan maklumat yang diperlukan boleh diperolehi dengan lebih stabil. Kami percaya bahawa dengan perkembangan teknologi yang berterusan, perangkak web akan digunakan dalam lebih banyak senario.
Atas ialah kandungan terperinci Bina perangkak web yang paling cekap: menggunakan PHP dan Selenium. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!