初心者がスクレイピングやってみた
記事概要
Webスクレイピングは、インターネット上のデータを自動的に収集する技術です。
Pythonはそのための強力なツールを提供していますが、初学者にとっては幾つかの難所があります。
この記事では、初心者の私が実際にWebスクレイピングを実装する過程で遭遇した問題点とその解決方法を紹介します。
前準備
必要なライブラリのインストール
まず、Webスクレイピングに必要なライブラリをインストールしましょう。一般的にはrequestsとBeautifulSoupを使用します。
bash
pip install requests beautifulsoup4
注意点
ライブラリをインストールする際にpipが認識されない場合は、Pythonが正しくインストールされているか確認してください。
基本的なスクレイピングの流れ
基本的なスクレイピングの流れは以下の通りです。
- Webページの内容を取得する
- HTMLを解析する
- 必要なデータを抽出する
以下は基本的な実装したコードです。
Python
import requests
from bs4 import BeautifulSoup
# 取得したいウェブページのURL 今回はブルームバーグを利用しました
url = "https://www.bloomberg.co.jp/"
# ウェブページの内容を取得
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
# ヘッドラインとURLを抽出
headlines = []
for item in soup.find_all('h2', class_='headline'):
headline_text = item.get_text()
headline_url = item.find('a')['href']
headlines.append({'headline': headline_text, 'url': headline_url})
上記の処理で、headlinesの中に以下のようなデータが取得できました
[{'headline': '\nバイデン氏の正式候補、米民主党が認定前倒しを検討-大統領選挙\n', 'url': '/news/articles/2024-07-01/SFYLKIT1UM0W00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\n円は161円台半ば、米長期金利上昇で38年ぶり安値更新-介入警戒強い\n', 'url': '/news/articles/2024-07-01/SFXND9DWRGG000?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nトランプ氏返り咲きにらむウォール街、米債券市場の展開を予測\n', 'url': '/news/articles/2024-07-01/SFYKMKDWRGG000?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nエヌビディア、反トラスト関連で仏当局が告発を準備-ロイター報道\n', 'url': '/news/articles/2024-07-01/SFYNM1T0G1KX00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nECB総裁、「確信には時間がかかる」-インフレに不透明性残る\n', 'url': '/news/articles/2024-07-01/SFYBQNDWX2PS00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nマクロン氏と左派連合、ルペン氏の極右封じ込めに奔走\n', 'url': '/news/articles/2024-07-01/SFXOWXT0AFB400?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\n日本株は小反落へ、米製造業の景況感悪化が重し-輸出一角や素材安い\n', 'url': '/news/articles/2024-07-01/SFYR2ST1UM0W00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nNY連銀総裁、FRBがインフレ率2%達成への道を進んでいると確信\n', 'url': '/news/articles/2024-07-01/SFY7UZT0G1KW00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\n債券下落か、円安進行で日銀政策変更を警戒-10年入札無難観測は支え\n', 'url': '/news/articles/2024-07-01/SFQ8MOT0AFB400?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}, {'headline': '\nロビンフッド、プルートを買収-AI主導の投資アドバイスを提供へ\n', 'url': '/news/articles/2024-07-01/SFY495T1UM0W00?srnd=cojp-v2', 'time': '2024-07-02 23:49:26'}]
見出し、url、取得してきた日時が格納されています