ホームページ >バックエンド開発 >Python チュートリアル >Python での実践的なクローラー戦闘: 58 シティ クローラー

Python での実践的なクローラー戦闘: 58 シティ クローラー

WBOY
WBOYオリジナル
2023-06-10 11:36:072892ブラウズ

インターネットの急速な発展により、人々はさまざまなチャネルを通じて必要な情報を入手できるようになりました。この情報化時代において、Web クローラーは不可欠なツールとなっています。この記事ではPython-58シティクローラーの実際のクローラーを紹介します。

1. クローラーの概要

Web クローラーは、HTTP プロトコルを通じて Web ページにアクセスし、必要なデータを抽出する自動プログラムです。インターネット上には大量のデータがありますが、そのすべてが API を通じて利用できるわけではありません。したがって、クローラはデータを取得する重要な手段となっています。

クローラーのワークフローは、一般的に 3 つのステップに分かれています:

  1. Web ページのダウンロード: HTTP プロトコル経由で Web ページをダウンロードします。通常はリクエスト ライブラリを使用して実装されます。
  2. Web ページの解析: ダウンロードされた Web ページは、必要なデータを解析して抽出します。これは通常、BeautifulSoup4 ライブラリを使用して実装されます;
  3. ストレージ データ: 必要なデータをローカルまたはデータベースに保存します。

2. 実践的なクローラー戦闘: 58 シティ クローラー

58 シティは、製品情報、レンタル情報、採用情報などを公開する国家​​機密情報サイトです。この記事では、賃貸情報を取得するための58シティクローラーをPythonで実装する方法を紹介します。

  1. 分析 Web サイト

クロールする前に、58 都市の Web サイトを分析する必要があります。レンタルページに入り、希望の都市を選択すると、URL に都市の情報が含まれていることがわかります。たとえば、レンタルページの URL は「https://[都市ピンイン].58.com/zufang/」です。 URL の都市ピンインを変更すると、他の都市の賃貸情報をクロールできます。

レンタルページを開くと、ページ構成が検索バーとレンタル情報一覧の2つに分かれていることがわかります。賃貸情報一覧には、各賃貸情報のタイトル、賃料、エリア、所在地、住宅タイプ等が記載されている。

  1. クローラーの作成

58.com Web サイトを分析したら、クローラーを作成するだけです。まず、リクエストと BeautifulSoup4 ライブラリをインポートする必要があります。コードは次のとおりです。

import requests
from bs4 import BeautifulSoup

次に、各都市の賃貸情報を取得するには、正しい URL を構築する必要があります。コードは次のとおりです。

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

正しい URL を取得した後、リクエスト ライブラリを使用してページの HTML ソース コードを取得できます。コードは次のとおりです。

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

レンタル ページの HTML ソース コードを取得したので、BeautifulSoup4 ライブラリを使用して HTML ソース コードを解析し、必要なデータを抽出する必要があります。ページ構造によれば、レンタル情報リストは、クラスが「list-wrap」のdivタグ内に含まれる。 BeautifulSoup4 ライブラリの find_all() 関数を通じて、クラス「list-wrap」を持つすべての div タグを取得できます。コードは次のとおりです。

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

div タグを取得した後、タグ リストをたどって各レンタル情報のデータを抽出できます。ページ構造によれば、各賃貸情報は、タイトル、賃料、エリア、地理的位置、住宅タイプなどの情報を含む、各賃貸情報がクラス「des」の div タグに含まれています。コードは次のとおりです。

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

for ループで、find_all() 関数を使用して、クラス「des」を持つすべての div タグを取得しました。次に、これらの div タグを走査して、必要なレンタル データを抽出する必要があります。たとえば、レンタル情報のタイトルなどを抽出するコードは次のとおりです。

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

上記のコードにより、58 都市のレンタル ページの各レンタル情報を取得し、カプセル化することができました。変数に入れます。次に、各レンタル情報の変数を出力すると、コンソール上に出力されたデータが確認できます。例:

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

3. 概要

この記事では、Python-58 シティ クローラーの実際のクローラーを紹介します。クローラーを導入する前に、まず 58 都市のレンタル ページを分析し、レンタル情報を取得するための URL と抽出する必要のあるデータを特定しました。次に、リクエストと BeautifulSoup4 ライブラリを使用してクローラーを実装しました。クローラーを通じて、58 都市のレンタル ページのレンタル情報を取得し、その後のデータ処理を容易にするために変数にカプセル化することに成功しました。

以上がPython での実践的なクローラー戦闘: 58 シティ クローラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。