Dengan perkembangan Internet, kita boleh mendapatkan pelbagai maklumat dengan mudah melalui pelbagai enjin carian. Bagi pembangun, cara mendapatkan pelbagai data daripada enjin carian adalah kemahiran yang sangat penting. Hari ini, kita akan belajar cara menggunakan PHP untuk menulis perangkak untuk merangkak hasil carian Baidu.
1. Cara perangkak berfungsi
Sebelum bermula, mari kita fahami prinsip asas cara perangkak berfungsi.
2. Proses merangkak hasil carian Baidu
Pertama, kita perlu membina URL permintaan berdasarkan pada kata kunci. Mengambil carian untuk "perakak PHP" sebagai contoh, URL permintaan ialah: https://www.baidu.com/s?ie=UTF-8&wd=PHP%20%E7%88%AC%E8%99%AB
Antaranya, ie=UTF-8 bermaksud menggunakan pengekodan UTF-8 wd= diikuti dengan kata kunci carian.
Dalam PHP, kami boleh menggunakan perpustakaan cURL untuk menghantar permintaan HTTP. Kod pelaksanaan khusus adalah seperti berikut:
<?php function curl_request($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); return $output; } $url = 'https://www.baidu.com/s?ie=UTF-8&wd=PHP%20%E7%88%AC%E8%99%AB'; $html = curl_request($url); echo $html; ?>
Di sini, kami menggunakan fungsi curl_request() untuk menghantar permintaan dan mendapatkan kandungan halaman.
Seterusnya, kita perlu menggunakan ungkapan biasa untuk menghuraikan kandungan halaman dan mengekstrak data yang diperlukan untuk hasil carian. Kami boleh menggunakan alat pembangun penyemak imbas untuk melihat kod sumber halaman, mencari elemen HTML yang sepadan dengan data yang diperlukan, dan kemudian menggunakan ungkapan biasa untuk dipadankan.
Sebagai contoh, kami ingin mendapatkan tajuk dan pautan hasil carian, kami boleh mencari kod berikut daripada kod sumber halaman:
<h3 class="t"><a href="链接地址" target="_blank">标题</a></h3>
Kami boleh menggunakan ungkapan biasa berikut untuk dipadankan :
$pattern = '/<h3 class="t"><a([sS]*?)href="(.*?)"[sS]*?>([sS]*?)</a></h3>/'; preg_match_all($pattern, $html, $matches);
Di sini, kami menggunakan fungsi preg_match_all() untuk melaksanakan pemadanan ungkapan biasa dan menyimpan hasil padanan dalam pembolehubah $matches.
Akhir sekali, kami akan mengeluarkan hasil carian yang diekstrak untuk mendapatkan data yang kami inginkan. Kod pelaksanaan khusus adalah seperti berikut:
$url) { echo ($key + 1) . '、' . $matches[3][$key] . '
'; } ?>
Di sini, kami menggunakan gelung foreach untuk melintasi pautan dan tajuk yang dipadankan, dan mengeluarkan hasil ke halaman.
3. Ringkasan
Melalui pengenalan artikel ini, kami memahami prinsip asas perangkak PHP dan cara menggunakan PHP untuk merangkak hasil carian Baidu. Pada masa yang sama, kami juga menyedari bahawa penggunaan crawler memerlukan perhatian terhadap isu undang-undang, etika dan lain-lain. Kami perlu mematuhi peraturan yang berkaitan dan tidak menjalankan operasi merangkak yang menyalahi undang-undang.
Atas ialah kandungan terperinci Latihan perangkak PHP: merangkak hasil carian Baidu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!