今回はpythonを使ってyahooニュースをスクレイピングするプログラムを作りたいと思います。
スクレイピングの概要
ウェブスクレイピングとはwebサイトのデータを抽出する技術のことをです。
具体例
ECサイトに掲載されている商品の価格を抽出
株価の抽出
そのようにスクレイピングはさまざまなことに活用できる技術です。
今回行うこと
今回yahooニュースに載っているタイトルを抽出するということを行いたいと思います。
それを行うために今回以下の環境で実装したいと思います。
言語:Python
ライブラリ:requests、Beautifulsoup.re
スクレイピングの実装
では実装したいと思います。
import requests
from bs4 import BeautifulSoup
import re
url = "https://www.yahoo.co.jp/"
res = requests.get(url)
soup = BeautifulSoup(res.text, "html.parser")
elems = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
print(elems)
for elem in elems:
# タイトルを取得
title = elem.find("h1", class_="_3cl937Zpn1ce8mDKd5kp7u").get_text()
print(title)
これで完成しました。
実装したソースコードの解説
このコードはライブラリのインストールをするためにコードになります。
import requests
from bs4 import BeautifulSoup
import re
変数urlに今回スクレイピングするサイトのURLを指定します
二行目はrequestsライブラリを使いそのURLに対してのコンテンツの取得をするような処理です。
具体的には今回https://www.yahoo.co.jp/を指定したためそれにHTMLコードが変数resに格納されることになります。
url = "https://www.yahoo.co.jp/"
res = requests.get(url)
このコードでは主に取得したHTMLコードをBeautifulsoupを使って処理をするためのコードです。
soup = BeautifulSoup(res.text, "html.parser")
elems = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
次にこれについては難しいと思います、、
変数titleにh1のclassが3cl937Zpn1ce8mDKd5kp7uのものを探し出してそれを変数に格納しました。
for elem in elems:
# タイトルを取得
title = elem.find("h1", class_="_3cl937Zpn1ce8mDKd5kp7u").get_text()
print(title)
print(elem.attrs["href"])
感想
どうだったでしょうか、あまり説明能力がなくて感覚的な形で表現してしまいましたがある程度の理解をしてくれるだけでも嬉しいです。これを機にスクレイピングに挑戦してみることをおすすめします。
コメント