見出し画像

ニューストピックス一覧を抽出(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」です。

画像1


トピックス一覧を取得

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 はこちらの記事で整理してあります。他の記事が気になった方は読んでみてください。

以上

何かお役に立てたら、サポートしていただけると嬉しいです!モチベーションを高めて、アウトプットしていきます!