【Python3】ウェブスクレイピング(BeautifulSoupライブラリを利用してパース)

[スポンサーリンク]


Python3でウェブスクレイピング


Python3でウェブスクレイピングをしてみたいと思います
下記の2ステップで、ウェブから必要な情報を取得します

①reauestsライブラリで、ウェブからHTMLを取得
②Beautiful Soupライブラリで、HTMLから必要な情報取得

今回は、気象庁様のサイトから大阪府の天気予報を取得して、当日の天気予報を取得します

気象庁 | 著作権・リンク・個人情報保護について
気象庁ホームページの著作権・リンク・個人情報保護についてのページです

reauestsライブラリでウェブからHTMLを取得



requestsライブラリとは


PythonでHTTPを使った通信を行う為のライブラリです
可読性が高く、コード作成も容易と評判の外部ライブラリです

Requests is an elegant and simple HTTP library for Python, built for human beings.

Requests: HTTP for Humans™ — Requests 2.24.0 documentation

requestsライブラリのインストール


requestsライブラリのインストールは下記の記事で作業を記録しています
pip(Pip Installs Python)コマンドで簡単にインストール出来ます

【Python3】【TwitterAPI】PythonとTwitterAPIを触ってみる準備
TwitterAPIとは先日Python3を使用出来る環境を構築しました勉強として、Pythonで簡単なプログラミングをしてみたいと思います何を作るか迷ったのですが、良く利用しているTwitterを操作して...

requestsライブラリHTML取得 サンプルコード


・HTMLを取得するURLを設定

・requestsのレスポンスを取得

・HTMLが含まれるレスポンスのtextを取得


requestsライブラリHTML取得 サンプルレスポンス


今回は、WebWebスクレイピングの対象として、気象庁様の大阪府の天気予報ページのHTMLを取得しました
WebページのHTMLが取得出来ていることが分かります

気象庁 | 天気予報 : 大阪府

Beautiful SoupライブラリでHTMLから必要な情報取得



Beautiful Soupライブラリとは


PythonでHTMLやXMLファイルからデータを取得する為のライブラリです
パーサ(構文解析)を非常に簡単に出来るライブラリで、下記の記載の通り、短時間での情報取得を実現してくれます

It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers hours or days of work.

Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation

Beautiful Soupライブラリのインストール


pipコマンドで簡単にインストール出来ます
pip(Pip Installs Python)のインストールは下記の記事で作業を記録しています

【Python3】【TwitterAPI】PythonとTwitterAPIを触ってみる準備
TwitterAPIとは先日Python3を使用出来る環境を構築しました勉強として、Pythonで簡単なプログラミングをしてみたいと思います何を作るか迷ったのですが、良く利用しているTwitterを操作して...

Beautiful Soupライブラリパース サンプルコード


requestsライブラリを使って、気象庁様の大阪府の天気予報のページのHTMLを取得しました
Beautiful Soupライブラリで、HTMLをパースして、当日の天気予報と降水確率を取り出します

・取得したHTML(ScrapingGetHtmlResult)をHTML(html.parser)としてパース(構文解析)

・天気予報を取得
 気象庁様のサイトでは、天気予報を太陽や雲の画像で表示しています
 今回は天気予報を示す画像のタイトルを取得することで、天気予報を文字で取得します
 .find(‘th’, {‘class’: ‘weather’}) → 「weather」クラスのthタグの情報を取得
 .find(‘img’) → imgタグの情報を取得
 .attrs[‘title’] → title要素を取得

・降水確率を取得
 気象庁様のサイトでは、今日、明日、明後日の3日分の降水確率を表示しています
 降水確率が6時間毎の4つのパーセント表示で、一日の降水確率を表示しています
 .find(‘td’, {‘class’: ‘rain’}) → 「rain」クラスのtdタグの情報を取得。findを使用しているので一つ目の要素(今日)の降水確率を取得。
 .find_all(‘td’, {‘align’: ‘right’})  → 「align」属性がrightとなっているtdタグの情報を取得。find_allを使用しているので、全ての要素(6時間毎の4つのパーセント表示)を取得。

・取得した降水確率(6時間毎の4つのパーセント表示)を含むtdタグの情報からテキストを取得


Beautiful Soupライブラリパース サンプルレスポンス


スクレイピング当日の天気予報と、6時間毎の降水確率を取得出来ました
午後に実行したので、午前の(0-6,6-12)は–%表示になっています

Beautiful Soupを使うと、HTMLが簡単に構文解析出来て、欲しい情報を取得出来ます
尚、HTMLベースの情報取得なので、取得サイトのレイアウト変更等があった場合は、対処が必要になります

[スポンサーリンク]

[スポンサーリンク]
▼オンラインで、初心者のプログラミングへの挑戦も、SE職のスキルアップも▼

コメント

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