前提・実現したいこと
気象庁の北海道の1年間の天気をスクレイピングし、'年月日', '陸の平均気圧(hPa)', '海の平均気圧(hPa)', '平均気温(℃)', '平均湿度(%)', '平均風速(m/s)', '日照時間(h)'を取得したい
発生している問題・エラーメッセージ
スクレイピングしたのですが5月の部分までは降水量だった部分が6月から気圧っぽい数字になってしまします予期していない数字が入り込んできます。詳しくは発生している問題の部分に記載してあります。
['2000/5/29', 990.6, 993.6, 0.0, 0.0, 0.0, 27.5, 57.0],
['2000/5/30', 999.8, 1002.7, 0.0, 0.0, 0.0, 24.3, 40.0],
['2000/5/31', 1005.1, 1008.1, 0.0, 0.0, 0.0, 24.7, 57.0]←ここまでは4つ目に降水量が入っている
['2000/6/1', 1004.5, 1007.5, 1006.5, 0.0, 0.0, 21.3, 70.0]←ここから4つ目に気圧っぽい数字が入っている
['2000/6/2', 1008.8, 1011.9, 1009.3, 0.0, 0.0, 13.2, 89.0],
['2000/6/3', 1006.3, 1009.4, 1007.1, 7.0, 0.0, 18.5, 88.0],
該当のソースコード
python
1import requests 2from bs4 import BeautifulSoup 3All_list = []#初期化 4#URLで年と月ごとの設定ができるので%sで指定した英数字を埋め込めるようにします。 5base_url = "http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=14&block_no=47412&year=%s&month=%s&day=1&view=a2" 6#試しに2000年だけ実行しています 7for year in range(2000,2001): 8 #入れ子のforで1月~12月の12回を回します。 9 for month in range(1,13): 10 #for文で2000年1月...2月...3月と回せるので埋め込んで行きます。 11 r = requests.get(base_url%(year,month)) 12 r.encoding = r.apparent_encoding 13 14 #対象である表をスクレイピングしていきます。 15 soup = BeautifulSoup(r.text,'lxml') 16 rows = soup.findAll('tr',class_='mtx') 17 i = 1 18 19 #表の最初の1〜3行目はカラム情報なのでスライスしていまいます。 20 rows = rows[4:] 21 22 for row in rows: 23 # 今度はtrのなかのtdをすべて抜き出します 24 data = row.findAll('td') 25 26 #1行の中には様々なデータがあるので全部取り出す。 27 # ★ポイント 28 rowData = [] #初期化 29 rowData.append(str(year) + "/" + str(month) + "/" + str(data[0].string)) 30 rowData.append(str2float(data[1].string))#陸の平均気圧 31 rowData.append(str2float(data[2].string))#海の平均気圧 32 rowData.append(str2float(data[3].string))#降水量 33 rowData.append(str2float(data[6].string))#平均気温 34 rowData.append(str2float(data[9].string))#平均湿度 35 rowData.append(str2float(data[11].string))#平均風速 36 rowData.append(str2float(data[16].string))#日照時間 37 38 #次の行にデータを追加 39 All_list.append(rowData)
試したこと
data[9]#平均湿度をunique()で確認したところリストにarray([0.0, nan], dtype=object)で0.0かnanしか含まれておらず、ALL_listを確認したところ日にちと気圧の3列くらいしかきちんととれていませんでした。
補足情報(FW/ツールのバージョンなど)
参考:https://qiita.com/neet-AI/items/d434f3a96223c12fbdd3
https://qiita.com/Cyber_Hacnosuke/items/122cec35d299c4d01f10
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/21 04:01
2020/12/21 04:02