Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pertempuran crawler praktikal dalam Python: 58 crawler bandar

Pertempuran crawler praktikal dalam Python: 58 crawler bandar

WBOY
WBOYasal
2023-06-10 11:36:072843semak imbas

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

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!

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