ニューストピックス一覧を抽出(Python WEBスクレイピング)
Pythonを用いたWEBスクレイピングの基礎として、Requestsモジュールを使ってHTMLのデータを取得し、Beautiful Soupで解析、HTMLデータの抽出をやってみます。
今回はYahooニュースのトピックス一覧をテキストで抽出してみます。
開発環境
・windows 10(64bit)
・Visual Studio Code 1.48.0
・python 3.8.2(32bit版)
・Google Chrome
スクレイピング対象
今回スクレイピングする対象はYahooニュースのトピックス(下図赤点線枠)とします。取得するデータの情報は次のように見つけます。
■手順①
Google ChromeでYahooニュースを開く。
■手順②
「Ctrl」+「Shift」+「C」を押す。
そうするとコンソール画面が表示されます。
■手順③
カーソルをニューストピックスにあてる。
そうすると、対象のHTML部が表示されます。
■手順④
「ul」タグの「class」名称を確認する。
今回は「topicsList_main」です。
トピックス一覧を取得
Pythonで「Requests」と「BeautifulSoup」のライブラリを用いてYahooニュースのトピックスをテキストで抽出します。それぞれのライブラリの役割は以下になります。
RequestsはHTTPライブラリでWebページを取得するためのもの
Beautiful Soupは取得したHTMLから情報を抽出するためのもの
ソースコードは以下流れになっています。
①ライブラリをインポート
②指定したURLのHTML取得
③Beautiful SoupでHTML解析
④ニュース記事のテキストのみ抽出
⑤取得したHTMLデータ出力
# =================================================
# ライブラリインポート
# =================================================
#------------ WEBスクレイピング系 ------------#
# HTTP 通信ライブラリ
import requests
# HTMLデータ抽出ライブラリ
from bs4 import BeautifulSoup
# =================================================
# メイン
# =================================================
#------------ 指定したURLのHTML取得 ------------#
urlName = "https://news.yahoo.co.jp"
dataHTML = requests.get(urlName)
#------------ Beautiful SoupでHTML解析 ------------#
soup = BeautifulSoup(dataHTML.content, "html.parser")
#------------ ニュース記事のテキストのみ抽出 ------------#
newslist = soup.find("ul", "topicsList_main").text
#------------ 取得したHTMLデータ出力 ------------#
print(newslist)
print('----- END -----')
上記ソースコードを実行した結果が以下になります。
都389人感染 5日ぶり300人超国会議員 会館自室で喫煙横行大戸屋 オイシックスと提携GoTo登録宿 全体の4割どまり夢描いて来日 なぜ殴られたのベラ
ルーシ 数千人が人間の鎖秋山「激突捕球」監督も称賛浜辺美波が涙 青春思い出ない
----- END -----
参考サイト
今回、参考にさせていただいたサイトは以下になります。
過去 note 紹介
これまでに私が書いてきた note はこちらの記事で整理してあります。他の記事が気になった方は読んでみてください。
以上
何かお役に立てたら、サポートしていただけると嬉しいです!モチベーションを高めて、アウトプットしていきます!