yahooニュースをスクレイピングしてみた

python

今回は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

htmlコードを変数に格納

ここでは指定したURLのHTML(https://www.yahoo.co.jp/)のHTMLコードを変数resに格納します

url = "https://www.yahoo.co.jp/"
res = requests.get(url)

Beautifulsoupを使った処理

res.textでHTMLコンテンツを選択し、パーサーは”html.parser”で標準のHTMLパーサーを選択します

soup = BeautifulSoup(res.text, "html.parser")

elems = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))

次にこれについては難しいと思います、、
変数titleにh1のclassが3cl937Zpn1ce8mDKd5kp7uのものを探し出してそれを変数に格納しました。

タイトルを取得し出力

先ほど変数に格納されたelemsの要素を一つずつ処理しelemに格納します
処理内容としてはh1のタイトルを見つけ出しています。
最後にprint()で出力して完了です。

for elem in elems:
    # タイトルを取得
    title = elem.find("h1", class_="_3cl937Zpn1ce8mDKd5kp7u").get_text()
    print(title)
    print(elem.attrs["href"])

感想

このようにしてスクレイピングが実装できました。これを気に皆さんもスクレイピングに挑戦してみてください。

コメント

タイトルとURLをコピーしました