Cara melaksanakan perangkak web yang boleh dipercayai dengan PHP dan menangkap maklumat yang berkesan

WBOY
Lepaskan: 2023-06-27 18:46:01
asal
823 orang telah melayarinya

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. Pengetahuan asas tentang permintaan dan respons HTTP

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.

  1. Teknologi penghuraian dan pemprosesan dokumen HTML

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.

  1. Keupayaan penyimpanan dan pengurusan data

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
Salin selepas log masuk

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'));
Salin selepas log masuk

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);
Salin selepas log masuk

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
  );
}
Salin selepas log masuk

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;
  }
}
Salin selepas log masuk

3. Perkara yang perlu diambil perhatian semasa proses rangkak

  1. Berurusan dengan tapak web anti-merangkak

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.

  1. Gunakan proksi dengan sewajarnya

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.

  1. Kawal kekerapan permintaan

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!