目次
このブログでは、Python を使用して、交通情報 Web サイトからリアルタイムの交通情報を取得するクローラー プログラムを作成する方法を検討します。次の手順を順番に実行していきます。
- 対象の交通情報サイトを選択
- サイト構造を分析する
- ツールとライブラリを準備する
- クローラーを書く
- 取得したデータを保存する
クローラー プログラムの作成を開始する前に、必ず Web サイトの利用規約に従い、法的遵守の範囲内でクローラー テクノロジーを使用してください。
1. 対象の交通情報サイトを選択
まず、クロールの対象として交通情報 Web サイトを選択する必要があります。ここでは交通運行状況ネットワークを例に、Webサイトからリアルタイムの交通情報を取得します。
2. Webサイトの構造を分析する
次に、必要なデータを取得する方法を理解するために、対象の Web サイトの構造を分析する必要があります。ブラウザの開発者ツール (Chrome の「検査」機能など) を使用して、Web ページのソース コードを表示したり、Web ページのソース コードを直接表示したりできます。
交通運行状況Webページの構造を分析したところ、リアルタイムの交通情報がタブ内に含まれていることが分かりました<table>
。<table>
これらのタグからリアルタイムの交通情報を抽出できます。
3. ツールとライブラリを準備する
クローラー プログラムを作成する前に、必要なライブラリをインストールする必要があります。この例では、BeautifulSoup と Requests ライブラリを使用します。コマンド ラインで次のコマンドを実行して、これらのライブラリをインストールします。
pip install beautifulsoup4
pip install requests
次に、これらのライブラリをインポートし、クローラーを作成する準備をします。
4. クローラー プログラムを作成する
まず、traffic_scraper.py
という名前の新しいファイルを作成します。これがクローラーコードになります。
まず必要なライブラリをインポートします。
import requests
from bs4 import BeautifulSoup
次に、ターゲット Web サイトの HTML コンテンツを取得する関数を定義する必要があります。
def get_html(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
return None
次に、HTML コンテンツを解析して必要な情報を抽出する関数を作成する必要があります。
def parse_traffic_information(html):
soup = BeautifulSoup(html, 'html.parser')
traffic_table = soup.find('table', class_='traffic-table')
parsed_traffic_information = []
if traffic_table:
for row in traffic_table.find_all('tr')[1:]: # 跳过表头
columns = row.find_all('td')
road_name = columns[0].get_text(strip=True)
direction = columns[1].get_text(strip=True)
congestion_level = columns[2].get_text(strip=True)
parsed_traffic_information.append({
'road_name': road_name,
'direction': direction,
'congestion_level': congestion_level,
})
return parsed_traffic_information
最後に、クローラーを実行して結果を保存する main 関数を作成する必要があります。
def main():
url = 'http://www.jtystatus.com/'
html = get_html(url)
if html:
traffic_information = parse_traffic_information(html)
if traffic_information:
# 保存结果
with open('traffic_info.json', 'w') as f:
import json
json.dump(traffic_information, f, indent=2)
print("爬取完成,交通信息已保存到traffic_info.json文件中。")
else:
print("未找到交通信息,请确保输入的URL正确。")
else:
print("获取网页内容失败,请检查URL是否正确。")
if __name__ == '__main__':
main()
5.取得したデータを保存する
上記のコードでは、クロールされたリアルタイムの交通情報を JSON 形式でtraffic_info.json
という名前のファイルに保存しました。このファイルをチェックして結果を確認できます。
エピローグ
このブログでは、Python を使用して交通情報 Web サイトからリアルタイムの交通情報を取得するクローラー プログラムを作成する方法を詳しく説明しました。もちろん、これは単なる単純な例です。必要に応じてコードを変更して、他の交通情報 Web サイトから情報を取得したり、コードをさらに最適化してクローラーの効率と速度を向上させることができます。スクレイピング技術を使用する場合は、常にサイトの利用規約に従い、行為が法律に準拠していることを確認してください。
このプロジェクトをさらに拡張したい場合は、次の点を考慮する必要があります。
-
エラー処理と例外キャプチャを強化する: クローラーの安定性を確保するために、エラー処理と例外キャプチャをコードに追加して、予期しない状況が発生したときに問題に関する詳細情報を取得できます。
-
プロキシ IP を使用する: ターゲット Web サイトへの頻繁なアクセスによって IP がブロックされる問題を回避するために、クロールにプロキシ IP を使用できます。
-
タイミング クロール: リアルタイムの交通情報は常に変更される可能性があるため、取得したデータが最新であることを確認するために、スケジュールされたタスク (Python ライブラリの使用など) を使用してデータを定期的にクロールすることを検討できます
schedule
。 -
データの視覚化: 取得したリアルタイムの交通情報は、データ視覚化ツール (matplotlib やその他のライブラリなど) を介して表示され、現在の交通状況をより直観的に理解できます。
-
リアルタイム通知:取得したリアルタイム交通情報に応じて、いくつかのしきい値を設定でき、交通渋滞がしきい値に達すると、自動的に通知(電子メール、テキストメッセージなど)を送信して交通状況を把握します。状況を把握し、それに応じた旅行計画を立てます。
このチュートリアルを学習することで、交通情報 Web サイトからリアルタイムの交通情報を取得するための簡単なクローラ プログラムの作成方法を習得できました。ぜひ実践の場で創造力を発揮して、より面白い機能を開発していただければと思います。楽しいプログラミングを!