Pertempuran crawler praktikal dalam Python: 58 crawler bandar

WBOY
Lepaskan: 2023-06-10 11:36:07
asal
2856 orang telah melayarinya

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:

  1. Memuat turun halaman web: memuat turun halaman web melalui protokol HTTP, secara amnya menggunakan perpustakaan permintaan; Menghuraikan halaman web: Halaman web yang dimuat turun menghuraikan dan mengekstrak data yang diperlukan, yang biasanya dilaksanakan menggunakan perpustakaan BeautifulSoup4
  2. Data storan: Simpan data yang diperlukan secara setempat atau dalam pangkalan data.
  3. 2. Pertempuran crawler praktikal: 58 city crawler

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 web
  1. Sebelum merangkak, anda perlu menganalisis tapak web 58.com. Dengan memasuki halaman sewa dan memilih bandar yang dikehendaki, anda boleh mendapati bahawa URL mengandungi maklumat bandar. Sebagai contoh, URL halaman sewa ialah: "https://[city pinyin].58.com/zufang/". Dengan mengubah suai pinyin bandar dalam URL, anda boleh merangkak maklumat sewaan di bandar lain.

Selepas 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 perangkak
  1. Selepas menganalisis tapak web 58.com, tulis sahaja perangkak. Pertama, anda perlu mengimport permintaan dan perpustakaan BeautifulSoup4. Kodnya adalah seperti berikut:
import requests
from bs4 import BeautifulSoup
Salin selepas log masuk

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

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

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

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:
        # 提取需要的租房数据
Salin selepas log masuk

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

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

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!

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