【Python学習中】 スクレイピング実践 Requestsモジュールとbeautifulsoup4モジュール1
今回は、今まで解説してきた
Requestsモジュールとbeautifulsoup4モジュールを使って
実際にスクレイピングをしていきます。
◆目次◆
スクレイピングのお題
「Yahoo! Japan 天気・災害」のトップページの検索窓で「東京」した結果の画面
「https://weather.yahoo.co.jp/weather/search/?p=東京」
「市区町村の表」のtableタグの情報を取得します。
手順1
「https://weather.yahoo.co.jp/weather/search/?p=東京」の
市区町村の表の情報をデベロッパーツールで取得する
→取得結果は以下の通りでした。
「#rsltmuni > div.serch-table > table > thead > tr > th > b」
この結果から、市区町村の表のidは「#rsltmuni 」であることが判明しました。
手順2
RequestsモジュールでHTTP通信を行い、以下を行う
・サイトの情報を取得する(変数rに「requestsオブジェクト」を格納する)
・通信ができるか確認する
・エンコードの種類は何か確認する(UTF-8以外の場合、文字化けすることがある)
(手順2のコードの記述は、「実際のコード」を参照してください)
手順3
beautifulsoup4モジュールでHTML解析を行い、以下を行う
・取得した情報をHTML解析する
・取得する情報に「idが#rsltmuniであるtableタグ」を指定する
(手順3のコードの記述は、「実際のコード」を参照してください)
実際のコード
import requests from bs4 import BeautifulSoup url = 'https://weather.yahoo.co.jp/weather/search/?p=東京' r = requests.get(url) # 変数rに対して、通信とエンコードの種類の確認を行う # r.raise_for_status()は、通信が失敗したらエラーを返す(エラーになったら処理が中断される) r.raise_for_status() r.status_code r.encoding # 変数soupに変数rのHTMLドキュメントとHTML解析ツールを格納する soup = BeautifulSoup(r.text, 'html.parser') # 市区町村の表のidは「#rsltmuni 」なので # 変数rsltmuni_tableにselect()メソッドでidは「#rsltmuni 」のtableタグを指定する rsltmuni_table = soup.select('#rsltmuni table') # 各結果を出力する print(f'通信結果:{r.status_code}') print(f'通信結果:{r.encoding}') print(f'市区町村の表のHTML情報の取得結果:\n{rsltmuni_table}') # 出力結果 # 通信結果:200 # 通信結果:utf-8 # 市区町村の表のHTML情報の取得結果: # [<table border="1" cellpadding="3" cellspacing="0" class="yjw_table3" width="100%"> # ・ # ・ # ・ # </table>]
これで市区町村の表がHTML情報で取得できました。
次回は、今回取得した市区町村の表の情報をもとに
さらに必要な情報を抜き出していきたいと思います。
Python スクレイピングとは? 概要と注意点 - Kの備忘録(仮)
Python スクレイピングをするための準備 Requestsモジュール1 - Kの備忘録(仮)
Python スクレイピングをするための準備 Requestsモジュール2 - Kの備忘録(仮)
Python スクレイピングをするための準備 beautifulsoup4モジュール1 - Kの備忘録(仮)
Python スクレイピングをするための準備 デベロッパーツール - Kの備忘録(仮)
Python スクレイピングをするための準備 beautifulsoup4モジュール2 - Kの備忘録(仮)