Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Latihan perangkak PHP: merangkak hasil carian Baidu

Latihan perangkak PHP: merangkak hasil carian Baidu

WBOY
WBOYasal
2023-06-13 12:39:261965semak imbas

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.

  1. Pertama, perangkak akan menghantar permintaan kepada pelayan untuk meminta kandungan tapak web.
  2. Selepas pelayan menerima permintaan, ia akan mengembalikan kandungan halaman web.
  3. Selepas perangkak menerima kandungan, ia akan menghuraikannya melalui ungkapan biasa dan kaedah lain untuk mengekstrak data yang diperlukan.
  4. Akhir sekali, perangkak menyimpan data ke pangkalan data atau fail.

2. Proses merangkak hasil carian Baidu

  1. Membina URL permintaan

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.

  1. Hantar permintaan untuk mendapatkan kandungan halaman

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.

  1. Menghuraikan 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.

  1. Hasil keluaran

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!

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