Bagaimana untuk melaksanakan perangkak web yang boleh dipercayai dalam PHP dan menangkap maklumat yang berkesan
Dengan pembangunan Internet dan jumlah data yang semakin meningkat, permintaan untuk perangkak web telah menjadi semakin makmur. Crawler secara automatik boleh mengumpul, mengekstrak, memproses dan menyimpan data berskala besar daripada Internet, menyediakan asas dan sokongan untuk aplikasi dalam semua lapisan masyarakat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan perangkak web yang boleh dipercayai dan menangkap maklumat yang berkesan.
1. Prinsip crawler
Web crawler, juga dikenali sebagai web spider, web robot, web harvester, auto indexer atau program spider, ialah Program yang boleh menyemak imbas, mengindeks dan merangkak pelbagai maklumat secara automatik di Internet. Prinsipnya adalah untuk menghantar permintaan ke tapak web sasaran melalui protokol HTTP, menghuraikan kandungan HTML dan metadata dalam data yang dikembalikan oleh tapak web, mengekstrak maklumat sasaran dan menyimpannya. Melaksanakan perangkak web memerlukan elemen berikut:
1) Permintaan HTTP: Protokol HTTP ialah salah satu protokol yang paling banyak digunakan di Internet Pelanggan meminta kandungan daripada pelayan melalui HTTP permintaan. Permintaan HTTP terdiri daripada kaedah HTTP, pengecam sumber permintaan, versi protokol, pengepala permintaan dan badan permintaan.
2) Respons HTTP: Respons HTTP ialah balasan pelayan kepada permintaan. Ia terdiri daripada baris status (kod status dan frasa status), pengepala respons dan badan respons, di mana badan respons ialah kandungan sumber yang diminta.
HTML ialah bahasa penanda yang digunakan untuk mereka bentuk halaman web, menggunakan tag bahasa Inggeris untuk membenamkan teks, imej, audio dan elemen lain ke dalam halaman web. Oleh itu, dalam proses melaksanakan perangkak web, anda perlu dapat memahami struktur dokumen HTML, semantik teg dan metadata lain.
Data yang ditangkap perlu distruktur dan disimpan dalam pangkalan data atau fail untuk merealisasikan visualisasi dan pertanyaan data. Ini memerlukan pemahaman tentang struktur pangkalan data dan bahasa SQL.
2. Pelaksanaan perangkak PHP
Dalam PHP, anda boleh menggunakan rangka kerja perangkak pihak ketiga atau melaksanakan perangkak itu sendiri. Berikut ialah dua kaedah biasa:
1 Gunakan rangka kerja perangkak pihak ketiga
1) Goutte
Goutte ialah perangkak web dan komponen pengekstrakan web untuk PHP 5.3+. Ia boleh mensimulasikan pelayar sebenar dan menyediakan API operasi seperti jQuery untuk memudahkan pengekstrakan dan operasi data Ia juga menyokong fungsi seperti kuki dan proksi HTTP. Disebabkan kemudahan penggunaan, sokongan dan fleksibiliti, semakin ramai pembangun telah memilih perpustakaan ini untuk membina perangkak web mereka dalam beberapa tahun kebelakangan ini.
2) PHP-Webdriver
PHP-Webdriver ialah perpustakaan klien Selenium dalam PHP yang membenarkan kod PHP berkomunikasi dengan Selenium WebDriver (atau WebDriver lain) dan mengawal proses berjalan penyemak imbas. Ini lebih sesuai untuk contoh di mana anda perlu merangkak data daripada halaman dinamik. Contohnya: Jadual diberikan menggunakan JS, dsb.
Contoh:
Pasang Goutte:
composer require fabpot/goutte:^3.2
Gunakan Goutte:
use GoutteClient; $client = new Client(); $crawler = $client->request('GET', 'https://www.baidu.com/'); $form = $crawler->filter('#form')->form(); $crawler = $client->submit($form, array('q' => 'search'));
2 Perangkak PHP Tulisan Tangan
Kelebihan perangkak tulisan tangan ialah ia mempunyai pemahaman yang lebih terperinci tentang tingkah laku crawler. dan konfigurasi diperibadikan. Pada ketika ini ia boleh dibahagikan kepada tiga bahagian: meminta halaman, menghuraikan halaman dan menyimpan data.
1) Minta halaman
Gunakan sambungan CURL PHP untuk mensimulasikan permintaan HTTP untuk mendapatkan kandungan halaman. CURL boleh menghantar permintaan berdasarkan protokol HTTP dan mengembalikan respons HTTP untuk URL tertentu.
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $content = curl_exec($ch);
2) Parse halaman
Gunakan kelas DOMDocument PHP untuk menghuraikan halaman HTML untuk membina pepohon DOM dan gunakan teknologi XPath (bahasa pertanyaan untuk dokumen XML dan HTML) untuk mengekstrak kandungan halaman melalui peraturan.
$dom = new DOMDocument(); @$dom->loadHTML($content); $xPath = new DOMXPath($dom); $items = $xpath->query("//div[@class='items']//h2//a"); foreach ($items as $item) { $title = trim($item->childNodes->item(0)->nodeValue); $link = $item->attributes->getNamedItem("href")->nodeValue; $data[] = array( "title" => $title, "link" => $link ); }
3) Simpan data
Simpan data yang ditangkap dari halaman ke dalam pangkalan data atau fail. Pangkalan data seperti MySQL atau MongoDb boleh digunakan untuk menyimpan data.
$mysql = new mysqli('localhost', 'username', 'password', 'db'); foreach ($data as $item) { $title = $mysql->real_escape_string($item['title']); $link = $mysql->real_escape_string($item['link']); $sql = "INSERT INTO table(title,link) VALUES ('$title','$link')"; if ($mysql->query($sql) === true) { $inserted[] = $item; } }
3. Perkara yang perlu diambil perhatian semasa proses rangkak
Untuk mengehadkan tingkah laku perangkak, sesetengah tapak web akan menggunakan beberapa teknologi untuk menghalang perangkak, seperti menggunakan kod pengesahan, menyekat IP, had laju, dsb. Untuk mengelak daripada disekat oleh dasar anti-merangkak, anda perlu memintas sekatan berdasarkan teknologi anti-merangkak tapak web.
Semasa proses merangkak, mungkin terdapat kes di mana IP disekat oleh tapak web. Kaedah mudah ialah menggunakan IP proksi untuk mengakses laman web. Pada masa yang sama, anda boleh menggunakan kumpulan IP proksi untuk mengurangkan risiko IP disekat.
Permintaan yang kerap boleh menyebabkan gangguan pada mekanisme anti-rangkak, jadi kelajuan permintaan perangkak perlu dikawal dengan sewajarnya. Kaedah pelaksanaan termasuk: menggunakan kaedah tidur untuk mengawal selang masa antara dua permintaan menggunakan baris gilir mesej untuk mengawal bilangan mesej yang dihantar dalam tempoh masa yang ditetapkan dalam beberapa tempoh masa untuk mengelakkan permintaan yang kerap dalam tempoh yang singkat; masa.
4. Kesimpulan
Perangkak web ialah teknologi yang sangat berguna dan praktikal yang boleh membantu kami mendapatkan dan menyusun data yang banyak dengan cepat. Artikel ini memperkenalkan kaedah melaksanakan perangkak web yang boleh dipercayai melalui PHP, dan memahami prinsip asas perangkak, rangka kerja yang berkaitan dan proses menulis perangkak secara manual, serta perkara yang perlu diberi perhatian semasa proses rangkak. Saya harap artikel ini dapat membantu anda dengan aplikasi praktikal semasa menulis perangkak web pada masa hadapan.
Atas ialah kandungan terperinci Cara melaksanakan perangkak web yang boleh dipercayai dengan PHP dan menangkap maklumat yang berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!