Dengan perkembangan pesat Internet, orang ramai boleh mendapatkan maklumat yang mereka perlukan melalui pelbagai saluran. Dalam era maklumat ini, perangkak web telah menjadi alat yang sangat diperlukan. Dalam artikel ini, kami akan memperkenalkan perangkak sebenar dalam perangkak bandar Python-58.
1. Pengenalan kepada perangkak
Perangkak web ialah program automatik yang mengakses halaman web melalui protokol HTTP dan mengekstrak data yang diperlukan. Di Internet, terdapat banyak data, tetapi tidak semuanya tersedia melalui API. Oleh itu, perangkak telah menjadi cara penting untuk mendapatkan data.
Aliran kerja perangkak biasanya dibahagikan kepada tiga langkah:
58 city ialah tapak web maklumat terperingkat negara di mana pengguna boleh menerbitkan maklumat produk, maklumat penyewaan, maklumat pengambilan, dsb. Artikel ini akan memperkenalkan cara melaksanakan perangkak bandar 58 melalui Python untuk mendapatkan maklumat sewaan.
Analisis tapak webSelepas membuka halaman sewaan, anda boleh mendapati bahawa struktur halaman terbahagi kepada dua bahagian: bar carian dan senarai maklumat penyewaan. Senarai maklumat sewa termasuk tajuk, sewa, kawasan, lokasi geografi, jenis perumahan dan maklumat lain bagi setiap maklumat sewa.
Menulis perangkakimport requests from bs4 import BeautifulSoup
Seterusnya, mendapatkan maklumat sewaan di setiap bandar memerlukan pembinaan URL yang betul. Kodnya adalah seperti berikut:
city_pinyin = "bj" url = "https://{}.58.com/zufang/".format(city_pinyin)
Selepas mendapatkan URL yang betul, anda boleh menggunakan perpustakaan permintaan untuk mendapatkan kod sumber HTML halaman. Kod tersebut adalah seperti berikut:
response = requests.get(url) html = response.text
Kini setelah anda memperoleh kod sumber HTML halaman sewa, anda perlu menggunakan perpustakaan BeautifulSoup4 untuk menghuraikan kod sumber HTML dan mengekstrak data yang diperlukan. Mengikut struktur halaman, senarai maklumat sewaan terkandung dalam teg div dengan kelas "list-wrap". Kita boleh mendapatkan semua tag div dengan kelas "list-wrap" melalui fungsi find_all() dalam perpustakaan BeautifulSoup4. Kodnya adalah seperti berikut:
soup = BeautifulSoup(html, "lxml") div_list = soup.find_all("div", class_="list-wrap")
Selepas mendapatkan teg div, anda boleh melintasi senarai teg dan mengekstrak data setiap maklumat sewaan. Mengikut struktur halaman, setiap maklumat sewaan terkandung dalam teg div dengan kelas "des", termasuk tajuk, sewa, kawasan, lokasi geografi, jenis perumahan dan maklumat lain. Kodnya adalah seperti berikut:
for div in div_list: info_list = div.find_all("div", class_="des") for info in info_list: # 提取需要的租房数据
Dalam gelung for, kami menggunakan fungsi find_all() untuk mendapatkan semua tag div dengan kelas "des". Seterusnya, kita perlu melintasi tag div ini dan mengekstrak data sewaan yang diperlukan. Sebagai contoh, kod untuk mengekstrak tajuk dan maklumat lain maklumat penyewaan adalah seperti berikut:
title = info.find("a", class_="t").text rent = info.find("b").text size = info.find_all("p")[0].text.split("/")[1] address = info.find_all("p")[0].text.split("/")[0] house_type = info.find_all("p")[1].text
Melalui kod di atas, kami telah berjaya mendapatkan setiap maklumat sewaan pada halaman sewa 58 bandar dan merangkumkannya ke dalam pembolehubah. Seterusnya, dengan mencetak pembolehubah setiap maklumat sewaan, anda boleh melihat output data pada konsol. Contohnya:
print("标题:{}".format(title)) print("租金:{}".format(rent)) print("面积:{}".format(size)) print("地理位置:{}".format(address)) print("房屋类型:{}".format(house_type))
3. Ringkasan
Artikel ini memperkenalkan perangkak sebenar dalam Python - 58 perangkak bandar. Sebelum perangkak dilaksanakan, kami terlebih dahulu menganalisis halaman sewa 58 bandar dan menentukan URL untuk mendapatkan maklumat sewaan dan data yang perlu diekstrak. Kemudian, perangkak telah dilaksanakan menggunakan permintaan dan perpustakaan BeautifulSoup4. Melalui perangkak, kami berjaya memperoleh maklumat sewaan halaman sewa 58 bandar dan merangkumnya ke dalam pembolehubah untuk memudahkan pemprosesan data seterusnya.
Atas ialah kandungan terperinci Pertempuran crawler praktikal dalam Python: 58 crawler bandar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!