Heim  >  Artikel  >  Backend-Entwicklung  >  Praktischer Crawler-Kampf in Python: 58 City Crawler

Praktischer Crawler-Kampf in Python: 58 City Crawler

WBOY
WBOYOriginal
2023-06-10 11:36:072812Durchsuche

Mit der rasanten Entwicklung des Internets können Menschen über verschiedene Kanäle an die benötigten Informationen gelangen. Im Informationszeitalter sind Webcrawler zu einem unverzichtbaren Werkzeug geworden. In diesem Artikel stellen wir den eigentlichen Crawler in Python-58 City Crawler vor.

1. Einführung in Crawler

Ein Webcrawler ist ein automatisiertes Programm, das über das HTTP-Protokoll auf Webseiten zugreift und die erforderlichen Daten extrahiert. Im Internet gibt es viele Daten, aber nicht alle davon sind über APIs verfügbar. Daher sind Crawler zu einem wichtigen Mittel zur Datenbeschaffung geworden.

Der Workflow eines Crawlers ist im Allgemeinen in drei Schritte unterteilt:

  1. Webseiten herunterladen: Webseiten über das HTTP-Protokoll herunterladen, im Allgemeinen unter Verwendung der Anforderungsbibliothek;
  2. Webseiten analysieren: Die heruntergeladenen Webseiten analysieren und die erforderlichen extrahieren Daten, verwenden Sie im Allgemeinen die BeautifulSoup4-Bibliothek Implementierung;
  3. Speicherdaten: Speichern Sie die erforderlichen Daten lokal oder in der Datenbank.

2. Praktischer Crawler-Kampf: 58 City Crawler

58 City ist eine nationale Website mit geheimen Informationen, auf der Benutzer Produktinformationen, Mietinformationen, Rekrutierungsinformationen usw. veröffentlichen können. In diesem Artikel wird erläutert, wie Sie den 58 City Crawler über Python implementieren, um Mietinformationen zu erhalten.

  1. Analysieren Sie die Website

Vor dem Crawlen müssen Sie die 58.com-Website analysieren. Wenn Sie die Mietseite aufrufen und die gewünschte Stadt auswählen, können Sie feststellen, dass die URL Informationen zur Stadt enthält. Die URL der Mietseite lautet beispielsweise: „https://[city pinyin].58.com/zufang/“. Durch Ändern des Stadt-Pinyins in der URL können Sie Mietinformationen in anderen Städten crawlen.

Nach dem Öffnen der Mietseite können Sie feststellen, dass die Seitenstruktur in zwei Teile unterteilt ist: die Suchleiste und die Mietinformationsliste. Die Mietinformationsliste enthält Titel, Miete, Fläche, geografische Lage, Wohnungstyp und andere Informationen zu jeder Mietinformation.

  1. Einen Crawler schreiben

Nach der Analyse der 58.com-Website schreiben Sie einfach den Crawler. Zuerst müssen Sie die Anfragen und BeautifulSoup4-Bibliotheken importieren. Der Code lautet wie folgt:

import requests
from bs4 import BeautifulSoup

Um die Mietinformationen in jeder Stadt zu erhalten, muss als Nächstes die richtige URL erstellt werden. Der Code lautet wie folgt:

city_pinyin = "bj"
url = "https://{}.58.com/zufang/".format(city_pinyin)

Nachdem Sie die richtige URL erhalten haben, können Sie die Anforderungsbibliothek verwenden, um den HTML-Quellcode der Seite abzurufen. Der Code lautet wie folgt:

response = requests.get(url)
html = response.text

Nachdem Sie nun den HTML-Quellcode der Mietseite erhalten haben, müssen Sie die BeautifulSoup4-Bibliothek verwenden, um den HTML-Quellcode zu analysieren und die erforderlichen Daten zu extrahieren. Gemäß der Seitenstruktur ist die Mietinformationsliste in einem div-Tag mit der Klasse „list-wrap“ enthalten. Wir können alle div-Tags mit der Klasse „list-wrap“ über die Funktion find_all() in der BeautifulSoup4-Bibliothek abrufen. Der Code lautet wie folgt:

soup = BeautifulSoup(html, "lxml")
div_list = soup.find_all("div", class_="list-wrap")

Nachdem Sie das div-Tag erhalten haben, können Sie die Tag-Liste durchsuchen und die Daten jeder Mietinformation extrahieren. Gemäß der Seitenstruktur ist jede Mietinformation in einem div-Tag mit der Klasse „des“ enthalten, einschließlich Titel, Miete, Fläche, geografische Lage, Wohnungstyp und andere Informationen. Der Code lautet wie folgt:

for div in div_list:
    info_list = div.find_all("div", class_="des")
    for info in info_list:
        # 提取需要的租房数据

In der for-Schleife haben wir erneut die Funktion find_all() verwendet, um alle div-Tags mit der Klasse „des“ abzurufen. Als nächstes müssen wir diese div-Tags durchlaufen und die erforderlichen Mietdaten extrahieren. Der Code zum Extrahieren des Titels und anderer Informationen der Mietinformationen lautet beispielsweise wie folgt:

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

Mit dem obigen Code haben wir alle Mietinformationen auf der 58-Städte-Mietseite erfolgreich abgerufen und in Variablen gekapselt. Als nächstes können Sie die Datenausgabe auf der Konsole sehen, indem Sie die Variablen der einzelnen Mietinformationen ausdrucken. Zum Beispiel:

print("标题:{}".format(title))
print("租金:{}".format(rent))
print("面积:{}".format(size))
print("地理位置:{}".format(address))
print("房屋类型:{}".format(house_type))

3. Zusammenfassung

Dieser Artikel stellt den eigentlichen Crawler in Python vor – 58 City Crawler. Bevor der Crawler implementiert wurde, analysierten wir zunächst die 58-Städte-Mietseite und ermittelten die URL, um Mietinformationen zu erhalten, sowie die Daten, die extrahiert werden mussten. Anschließend wurde der Crawler mithilfe von Requests und der BeautifulSoup4-Bibliothek implementiert. Über den Crawler haben wir erfolgreich die Mietinformationen der 58-Städte-Mietseite abgerufen und in Variablen gekapselt, um die nachfolgende Datenverarbeitung zu erleichtern.

Das obige ist der detaillierte Inhalt vonPraktischer Crawler-Kampf in Python: 58 City Crawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn