Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tutorial Asas Merangkak Web PHP: Menggunakan Perpustakaan cURL untuk Mengakses Laman Web

Tutorial Asas Merangkak Web PHP: Menggunakan Perpustakaan cURL untuk Mengakses Laman Web

WBOY
WBOYasal
2023-06-13 15:38:051775semak imbas

Dengan perkembangan Internet dan pertumbuhan data yang semakin meningkat, perangkak web telah menjadi salah satu cara penting untuk mendapatkan maklumat Internet. Perangkak web ialah program automatik yang mengakses tapak web melalui permintaan rangkaian, merangkak maklumat di tapak web, memproses dan menganalisisnya. Dalam kes ini, kami akan memperkenalkan cara menulis perangkak web asas dalam PHP, menggunakan perpustakaan cURL untuk mengakses tapak web yang perlu dirangkak dan memproses maklumat yang diperolehi.

  1. Pemasangan pustaka cURL

Pustaka cURL ialah alat yang sangat berkuasa untuk alat penukaran URL yang berfungsi di bawah baris arahan Ia juga menyokong HTTP/HTTPS /FTP/TELNET dan protokol rangkaian lain. Menggunakan perpustakaan cURL, anda boleh merangkak data web dengan mudah, memuat naik fail melalui data FTP, HTTP POST dan PUT serta mengakses sumber tapak jauh menggunakan kaedah pengesahan asas, ringkasan atau GSS-Negotiate. Kerana perpustakaan cURL sangat mudah dan mudah digunakan, ia digunakan secara meluas dalam penulisan perangkak web.

Dalam tutorial ini, kami akan menunjukkan cara menggunakan cURL dengan menggunakan sambungan CURL, jadi pertama sekali anda perlu memasang pustaka sambungan cURL dalam PHP. Anda boleh menggunakan baris arahan berikut untuk memasang sambungan cURL:

sudo apt-get install php-curl

Selepas pemasangan, kami perlu memulakan semula perkhidmatan php-fpm untuk memastikan pustaka sambungan boleh berjalan seperti biasa.

  1. Rangka skrip perangkak asas

Kami seterusnya akan menulis perangkak web asas untuk mengakses URL yang ditentukan untuk mendapatkan beberapa halaman web pada maklumat Asas URL tersebut. Berikut ialah rangka skrip perangkak asas:

<?php
$curl = curl_init();           
$url = "https://www.example.com/";
curl_setopt($curl, CURLOPT_URL, $url);     
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);  
curl_close($curl);       
echo $result;
?>

Kod di atas melaksanakan operasi berikut:

  • Memulakan sesi cURL.
  • Tetapkan URL dari mana kami ingin mengeluarkan maklumat.
  • Tetapkan pilihan supaya cURL mengembalikan data dan bukannya mengeluarkannya terus ke skrin.
  • Laksanakan permintaan dan dapatkan data.
  • Lepaskan sesi cURL.

Anda juga boleh menyesuaikan pilihan curl_setopt mengikut keperluan untuk memenuhi keperluan anda. Sebagai contoh, anda boleh menambah pilihan untuk menetapkan tamat masa menggunakan baris kod berikut:

curl_setopt($curl, CURLOPT_TIMEOUT, 5); // 5秒超时

Selain itu, anda boleh menggunakan pilihan curl_setopt untuk menetapkan pengepala HTTP untuk mensimulasikan penyemak imbas menghantar permintaan apabila tapak web diminta. Jika anda perlu menetapkan kuki, anda boleh menggunakan pilihan curl_setopt untuk menetapkan pemegang tempat kuki atau menggunakan fungsi yang berkaitan dalam Kuki cURL.

Selepas anda memperoleh data, anda mungkin perlu mengekstrak, menghuraikan dan menapisnya. Dalam proses ini, anda mungkin perlu menggunakan fungsi pemprosesan rentetan PHP, ungkapan biasa atau perpustakaan penghuraian lain.

  1. Contoh: Mengekstrak maklumat daripada tapak web sasaran

Untuk lebih memahami proses menulis perangkak web, berikut ialah contoh yang menunjukkan cara mengekstrak maklumat daripada tapak web . Laman web ini (www.example.com) ialah tapak web ujian yang daripadanya kami boleh mendapatkan data yang bermakna.

Pertama, kita perlu menggunakan perpustakaan cURL untuk mendapatkan data daripada tapak web yang ditentukan Berikut ialah coretan kod yang digunakan untuk mendapatkan data:

<?php
$curl = curl_init();
$url = "https://www.example.com/";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
?>

Menjalankan kod di atas akan mengeluarkan kod yang lengkap. kandungan HTML tapak web www.example.com. Memandangkan kita perlu mengekstrak maklumat khusus daripada tapak web yang diperoleh, kita perlu menghuraikan HTML. Kami akan menggunakan kelas DOMDocument untuk menghuraikan HTML, seperti kod berikut:

<?php
$curl = curl_init();
$url = "https://www.example.com/";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
$dom = new DOMDocument;
$dom->loadHTML($result);
foreach ($dom->getElementsByTagName('a') as $link) {
    echo $link->getAttribute('href'), PHP_EOL;
}
?>

Kod di atas menggunakan kelas DOMDocument untuk memuatkan HTML dan menggunakan kaedah getElementsByTagName() untuk mendapatkan semua elemen . Selepas itu, kita boleh menggunakan kaedah getAttribute() untuk mendapatkan atribut href bagi elemen yang sepadan. Menjalankan kod, kita dapat melihat bahawa output menghuraikan dan mengeluarkan URL yang terkandung dalam tag HTML .

  1. Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan perpustakaan cURL untuk menulis perangkak web asas. Kami juga membincangkan cara mengekstrak data daripada tapak web dan cara menghuraikan dokumen HTML. Dengan memahami konsep asas ini, anda akan dapat memahami dengan lebih baik cara perangkak web berfungsi dan mula menulis sendiri. Sudah tentu, terdapat banyak teknik dan isu rumit yang terlibat dalam menulis perangkak web, tetapi kami berharap artikel ini membantu anda memulakan perjalanan penulisan perangkak web anda dengan baik.

Atas ialah kandungan terperinci Tutorial Asas Merangkak Web PHP: Menggunakan Perpustakaan cURL untuk Mengakses Laman Web. 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