Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara merangkak maklumat sewaan Lianjia dengan PHP

Cara merangkak maklumat sewaan Lianjia dengan PHP

PHPz
PHPzasal
2023-06-13 15:43:571170semak imbas

Dalam era hari ini, apabila permintaan orang ramai untuk menyewa rumah terus meningkat, kemunculan pelbagai laman web maklumat hartanah, seperti Lianjia.com, 58.com, dan lain-lain, turut berkembang pesat. Bagi penyewa, adalah sangat penting untuk mendapatkan maklumat sewa dengan cepat. Dalam kes ini, menulis perangkak PHP untuk merangkak maklumat sewaan Lianjia ialah penyelesaian yang cekap dan mudah.

Artikel ini akan memperkenalkan kaedah PHP yang ringkas dan mudah difahami untuk merangkak maklumat sewaan Lianjia, supaya semua orang dapat dengan cepat mendapatkan dan menyepadukan maklumat yang diperlukan untuk mencari maklumat sewaan yang mereka berpuas hati dengan lebih baik.

1. Rangka kod sumber tapak web

Pertama sekali, untuk perangkak, perkara yang paling penting ialah mendapatkan kod sumber halaman web sasaran. Oleh itu, kita perlu menggunakan fungsi cURL PHP untuk mendapatkan kod sumber halaman utama Lianjia Rental. Kod khusus adalah seperti berikut:

$url = "https://sz.lianjia.com/zufang/"; // 链家租房首页网址
$ch = curl_init();  //初始化curl
curl_setopt($ch, CURLOPT_URL, $url); //设置爬取网页url
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//不直接输出网页内容
$data = curl_exec($ch);//执行curl
curl_close($ch);
echo $data;//输出网页源代码

Kod di atas menggunakan fungsi curl_init() untuk memulakan curl Fungsi curl_setopt() menetapkan URL halaman web sasaran yang perlu diperolehi dan tidak mengeluarkan secara langsung kandungan halaman web, tetapi menyimpannya dalam $ pembolehubah data. Kemudian gunakan fungsi curl_exec() untuk melaksanakan curl dan mendapatkan kod sumber halaman web. Akhir sekali, gunakan fungsi curl_close() untuk menutup curl.

2. Analisis kod sumber halaman web

Selepas berjaya mendapatkan kod sumber halaman utama sewa Lianjia, kami perlu menganalisisnya untuk mencari maklumat sewa yang diperlukan. Semasa analisis, ungkapan biasa perlu digunakan untuk memadankan maklumat yang diperlukan.

Dalam kod sumber halaman utama sewaan Lianjia, kami dapati maklumat sewaan terkandung dalam div dengan kelas "content__list--item", dan setiap maklumat sewaan ialah div bebas, jadi kami boleh menggunakan Regular ungkapan untuk memadankan div ini. Ungkapan biasa khusus adalah seperti berikut:

$preg = '/<div class="content__list--item".*?>.*?<div class="content__list--item--main">.*?<span class="content__list--item-price"><em>(.*?)</em>元/月</span>.*?<a.*?>(.*?)</a>.*?<span class="content__list--item--des">(.*?)</span>.*?<i>(.*?)</i>.*?</div>.*?</div>/si';
//匹配div,获取每个信息的价格、标题、描述、地区

Dalam ungkapan biasa di atas, kami memadankan teg div yang mengandungi maklumat sewaan dan menggunakan ungkapan biasa khusus untuk memadankan teg div yang mengandungi maklumat harga, tajuk, perihalan dan wilayah . Tag atau elemen div lain. Antaranya, pengubah mod si digunakan untuk memudahkan pemadanan berbilang baris teks.

3. Menghuraikan kod sumber halaman web

Selepas menggunakan ungkapan biasa untuk memadankan div di mana semua maklumat sewaan terletak, kami perlu menghuraikan dan menganalisis maklumat khusus yang terkandung dalam setiap sewaan maklumat, seperti sewa, alamat, dsb. Di sini, kita boleh menggunakan kelas DOMDocument PHP untuk memanipulasi teg HTML.

Kod khusus untuk menggunakan kelas DOMDocument untuk menghuraikan teg HTML adalah seperti berikut:

$dom = new DOMDocument();
$dom->loadHTML($data);
$domxpath = new DOMXPath($dom);
$element = $domxpath->query('//div[@class="content__list--item"]');
foreach($element as $el){
    //在这里做具体解析操作
}

Dalam kod di atas, kami mula-mula menggunakan kelas DOMDocument untuk memuatkan kod sumber halaman web yang diperoleh ke dalam DOM, dan gunakan kelas DOMXPath untuk melaksanakan pertanyaan xpath pada DOM. Kemudian, gunakan fungsi query() untuk menanyakan elemen div di mana semua maklumat sewaan terletak, dan gunakan fungsi foreach() untuk merentasi elemen div di mana setiap maklumat sewaan terletak.

4. Ekstrak maklumat yang diperlukan

Selepas melintasi div di mana setiap maklumat sewaan berada, kami perlu menggunakan ungkapan biasa untuk mengekstrak maklumat yang diperlukan, seperti harga, alamat, dsb. . Kod khusus adalah seperti berikut:

//提取价格
$price = $domxpath->query('.//span[@class="content__list--item-price"]/em',$el)->item(0)->nodeValue;
//提取标题
$title = $domxpath->query('.//a',$el)->item(0)->nodeValue;
//提取描述
$desc = $domxpath->query('.//span[@class="content__list--item--des"]',$el)->item(0)->nodeValue;
//提取地区
$region = $domxpath->query('.//i',$el)->item(0)->nodeValue;

Dalam kod di atas, kami menggunakan fungsi query() untuk menanyakan nod elemen HTML bagi maklumat yang diperlukan daripada elemen div di mana setiap maklumat sewaan terletak menggunakan item tersebut () berfungsi untuk memilih elemen pertama dalam senarai nod, dan kemudian gunakan sifat nodeValue untuk mendapatkan kandungan teks elemen tersebut.

5 Sepadukan maklumat yang diperlukan

Akhir sekali, kami menyepadukan semua maklumat yang diperlukan ke dalam tatasusunan bersekutu.

$info = ['price'=>$price,
         'title'=>$title,
         'desc'=>$desc,
         'region'=>$region];

Seterusnya, kami menambah maklumat bersepadu pada tatasusunan dan mengeluarkan keseluruhan tatasusunan selepas merentasi semua elemen div di mana maklumat sewaan terletak.

$result[] = $info;// 将每个房屋信息数组添加到$result数组
}
print_r($result);//输出所有租房信息数组

Melalui operasi di atas, kami boleh mendapatkan semua maklumat yang berkaitan dengan mudah di laman web sewa Lianjia, yang membawa kemudahan hebat kepada penyewaan kami.

Ringkasan

Melalui pengenalan artikel ini, saya percaya semua orang boleh menguasai kaedah merangkak maklumat sewaan Lianjia dengan PHP dengan mudah. Khususnya, kita perlu menggunakan fungsi cURL untuk mendapatkan kod sumber halaman web, menggunakan ungkapan biasa untuk memadankan elemen HTML di mana maklumat yang diperlukan terletak, menggunakan kelas DOMDocument untuk menghuraikan tag HTML, dan akhirnya menyepadukan maklumat yang diperlukan ke dalam tatasusunan bersekutu , dan keluarkan keseluruhan tatasusunan untuk mendapatkan maklumat sewaan terakhir yang diperlukan.

Atas ialah kandungan terperinci Cara merangkak maklumat sewaan Lianjia dengan 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