LoginSignup
0
4

【Python】BeautifulSoupを使ってスクレイピングで気象データを取得

Last updated at Posted at 2021-12-03

概要

スクレイピングとはWebサイトからデータを取得すること。
Webスクレイピングとも呼ばれます。
サイトによっては禁止されている場合やマナーなどがあるので、使うときは注意が必要です。

今回はBeautifulSoupurllib.requestいうモジュールを使って気象データを取得します。

最終的にこのようなCSVファイルを作成しました。

sample.csv
日時,現地気圧,海面気圧,降水量,平均気温,最高気温,最低気温,湿度,平均風速,最大風速,最大風向,日照時間
2020-01-01,1018.0,1021.0,--,5.5,10.2,3.2,49,2.6,6.1,337.5,7.4
...

Pythonで実装

今回は気象庁HPより、表になったデータを取得しました。

BeautifulSoupurllib.requestがない場合はpipなどで入れてください。
pip公式では下記のように書かれていました。

bash
pip install beautifulsoup4
pip install pycopy-urllib.request

それでは実装していきます。

scraping.py
import urllib.request
from bs4 import BeautifulSoup

url = "https://..."
html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html, "lxml")
tbl = soup.find("table", { "class" : "data2_s" })

for tr in tbl.findAll('tr'):
    tdList = tr.findAll('td')
    print(tdList[0].string)

urllib.requestでhtmlコードを取得し、BeautifulSoupで解析していきます。
第二引数には下記があります。必要なライブラリがない場合はエラーを吐きます。

  • lxml
  • html.parser
  • xml
  • html5lib

変数soupにはBeautifulSoupによって綺麗なコードが格納されています。
これを加工してデータを取得できます。

今回は表なので、htmlから表の部分を取り出し、trの中にあるtdを取得します。
findAllにはリスト型で入っているので、欲しい要素番号を指定しましょう。
stringをつけることで文字列になります。

これをCSVモジュール等でファイルに書き出せば、冒頭のようなCSVファイルを作成することができます。
詳しい説明はこちらでしています。

まとめ

PythonのBeautifulSoupを使って超簡単にスクレイピングを実現できました。
データ取得が自動化できるのはかなりありがたいですね。

その他

今回実装したソースコードはGitHubに置いてあります。

作成にあたり、下記サイトを参考にさせていただきました。
この場を借りて感謝申し上げます。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4