Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melakukan merangkak web dan mengikis data dalam PHP?

Bagaimana untuk melakukan merangkak web dan mengikis data dalam PHP?

WBOY
WBOYasal
2023-05-20 21:51:27927semak imbas

Dengan kemunculan era Internet, merangkak dan merebut data rangkaian telah menjadi kerja harian bagi ramai orang. Antara bahasa pengaturcaraan yang menyokong pembangunan web, PHP telah menjadi pilihan popular untuk perangkak web dan pengikisan data kerana kebolehskalaan dan kemudahan penggunaannya. Artikel ini akan memperkenalkan cara melakukan rangkak web dan mengikis data dalam PHP daripada aspek berikut.

1. Protokol HTTP dan pelaksanaan permintaan

Sebelum menjalankan rangkak web dan rangkak data, anda perlu mempunyai pemahaman tertentu tentang protokol HTTP dan pelaksanaan permintaan. Protokol HTTP adalah berdasarkan model permintaan-tindak balas Proses merangkak halaman web ialah proses mensimulasikan permintaan dan mendapatkan respons. Dalam PHP, anda boleh menggunakan perpustakaan curl untuk melaksanakan permintaan HTTP. Mulakan sesi melalui curl, tetapkan parameter permintaan dan hantar permintaan, dan kemudian dapatkan maklumat respons. Berikut ialah contoh mudah:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

Kod ini menggunakan curl untuk melaksanakan permintaan GET ke URL 'https://example.com' dan mengembalikan kandungan respons. Antaranya, CURLOPT_URL ialah URL yang diminta dan CURLOPT_RETURNTRANSFER ditetapkan kepada benar Fungsi curl_exec() akan mengembalikan kandungan respons tanpa mengeluarkannya secara langsung.

2. Penghuraian HTML

Selepas mendapatkan kandungan respons halaman web, HTML perlu dihuraikan untuk mengekstrak maklumat sasaran. Dalam PHP, anda boleh menggunakan perpustakaan pihak ketiga seperti Symfony's DomCrawler atau Goutte untuk menghuraikan HTML. Berikut ialah contoh mudah menggunakan DomCrawler untuk menghuraikan HTML:

use SymfonyComponentDomCrawlerCrawler;

$html = '<html><title>example</title><body><div class="post"><h2>Test</h2><p>Content</p></div></body></html>';
$crawler = new Crawler($html);
$title = $crawler->filter('title')->text();
$content = $crawler->filter('.post p')->text();

Kod ini mula-mula perlu memasang dan mengimport pustaka DomCrawler, dan kemudian memulakan objek Crawler menggunakan rentetan $html. Kemudian, elemen HTML yang ditentukan boleh diekstrak melalui kaedah penapis() dan ditukar kepada teks biasa dengan kaedah text().

3. Ungkapan biasa

Dalam PHP, anda juga boleh menggunakan ungkapan biasa untuk memanipulasi teks HTML. Ungkapan biasa ialah alat pemadanan teks tujuan umum yang mentakrifkan corak untuk memadankan aksara, perkataan atau corak tertentu dalam teks. Berikut ialah contoh mudah:

$html = '<html><title>example</title><body><div class="post"><h2>Test</h2><p>Content</p></div></body></html>';
preg_match('/<title>(.*)</title>/', $html, $matches);
$title = $matches[1];
preg_match('/<div class="post">(.*)</div>/', $html, $matches);
$content = $matches[1];

Kod ini menggunakan fungsi preg_match() untuk memadankan tajuk dan kandungan dalam HTML dan mengekstrak kandungan sasaran melalui ungkapan biasa yang ditentukan. Perlu diingatkan bahawa ungkapan biasa hendaklah setepat mungkin untuk mengelakkan padanan samar-samar dan padanan yang tidak disengajakan.

4. Operasi pangkalan data

Merangkak data biasanya memerlukan penyimpanan data yang dirangkak untuk analisis dan penggunaan seterusnya. Dalam PHP, anda boleh menggunakan berbilang pangkalan data seperti MySQL untuk penyimpanan data. Berikut ialah contoh operasi pangkalan data MySQL yang mudah:

$conn = mysqli_connect("localhost", "user", "password", "example");
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO posts (title, content) VALUES ('$title', '$content')";
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);

Kod ini menggunakan fungsi mysqli_connect() untuk menyambung ke pangkalan data MySQL, dan kemudian menggunakan fungsi mysqli_query() untuk melaksanakan operasi sisipan untuk memasukkan tajuk dan kandungan ke dalam jadual jawatan. Perlu diingatkan bahawa kaedah ini mempunyai isu keselamatan data seperti suntikan SQL, dan langkah keselamatan seperti pernyataan yang disediakan harus dipertimbangkan.

Ringkasan

Melalui pengenalan di atas, kita boleh memahami kaedah asas rangkak web dan rampasan data dalam PHP, termasuk pelaksanaan protokol dan permintaan HTTP, penghuraian HTML, ungkapan biasa dan operasi Pangkalan Data , dsb. Dalam aplikasi praktikal, ia juga perlu memilih kaedah yang sesuai untuk pelaksanaan secara fleksibel berdasarkan ciri struktur halaman web dan data sasaran. Saya percaya bahawa dengan bantuan kaedah ini, anda akan dapat merangkak dan mengikis data dengan lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk melakukan merangkak web dan mengikis data dalam PHP?. 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