🔍
【Python】簡単にWebスクレイピングしてYahoo!ニュースの記事タイトルに「AI」が含まれるものを抽出してみた
背景
そういえばWebスクレイピングって全くやったことないな…。
と、ふとそう思ったので軽く実践してみた。
作業環境
- OS:Windows11
- メモリ:16GB
- Visual Studio Code
- Python3は既にインストール済み
Webスクレイピングのターゲット
下準備
必要なライブラリは以下の2つ。
- requests
- beautifulsoup4
PowerShellからpipでインストールする。
pip3 install requests beautifulsoup4
ソースコード
ファイル名はscraping.pyとした。
from requests import *
from bs4 import BeautifulSoup
from re import *
url = "https://news.yahoo.co.jp/topics/it"
# URLにアクセス
res = get(url)
# res.contentをBeautifulSoupで扱うための処理
soup = BeautifulSoup(res.content, "html.parser")
# Webページ内の特定の範囲のみを抽出
topics_div = soup.find('div', id='uamods-topics')
if topics_div:
elems = topics_div.find_all('a', href=True)
# カウント用の変数
count = 0
# 記事タイトルに「AI」が含まれているリンクを抽出
for elem in elems:
title = elem.get_text(strip=True)
href = elem['href']
if search("AI", title):
print(f"タイトル:{title}")
print(f"URL:{href}\n")
count += 1
# 割合を算出
ratio = count / len(elems) * 100
formatted_ratio = "{:.2f}".format(ratio)
print(f"記事タイトルに「AI」が含まれている割合:{formatted_ratio}%")
実行
以下のコマンドをPowerShellに打ち込んでEnter。
python .\scraping.py
結果
2026/1/10にスクレイピングした結果がこれ。
タイトル:生成AIで詐欺電話判定 ドコモ開発1/10(土) 18:13
URL:https://news.yahoo.co.jp/pickup/6565685
タイトル:NVIDIA 自動運転向けAI基盤を発表1/6(火) 18:09
URL:https://news.yahoo.co.jp/pickup/6565212
タイトル:生成AIで詐欺が進化 今後の危険性1/5(月) 11:35
URL:https://news.yahoo.co.jp/pickup/6565035
タイトル:宮城県 全職員にAI有償アカ付与へ1/4(日) 17:54
URL:https://news.yahoo.co.jp/pickup/6564955
タイトル:AI搭載の車「SDV」開発の現在地1/4(日) 17:11
URL:https://news.yahoo.co.jp/pickup/6564952
記事タイトルに「AI」が含まれている割合:20.83%
所感
ちゃんとやるんならAI関連のキーワード(例:Grok、Gemini、ChatGPTなど)を一通り格納したデータベースとか作ってlistとして取り込んで二重ループかけるとかなんだろうなーと思いつつ、そこまでやると結構時間食いそうなのでそれはまた今度ということで。
注意事項
- 対象とするWebサイトの利用規約を遵守する
- 大規模なスクレイピングを行う場合はレート制限をかける
リンク集
Discussion