Python

【Python】Yahoo天気予報をスクレイピングしてデータを入手する

ISHI

この記事では、PythonでYahoo!天気をスクレイピングしてデータ取得する方法について紹介します。

[jin_icon_pencil color=”#405796″ size=”12px”]行うこと

Yahoo!天気から今日の天気と明日の天気を取得する。
https://weather.yahoo.co.jp/weather/jp/13/4410.html

事前準備

今回紹介するコードでは「requests」と「BeautifulSoup」を使用します。

pip install requests 
pip install beautifulsoup4

 

サンプルコード

import requests
from bs4 import BeautifulSoup

def GetYahooWeather(AreaCode):
    """
    Yahoo天気予報をスクレイピングする関数。

    Parameters
    ----------
    AreaCode : str
        対象となる数値を指定。
    
    Returns
    -------
    str
    """
    url = "https://weather.yahoo.co.jp/weather/jp/13/" + str(AreaCode) + ".html"
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'html.parser')
    rs = soup.find(class_='forecastCity')
    rs = [i.strip() for i in rs.text.splitlines()]
    rs = [i for i in rs if i != ""]
    return rs[0] + "の天気は" + rs[1] + "、明日の天気は" + rs[19] + "です。"

GetYahooWeather("4410")

 

使い方

print(GetYahooWeather("4410"))
>> 9月7日(水)の天気は曇のち雨、明日の天気は曇一時雨です。

 

コード解説

スクレイピングするURLについて
https://weather.yahoo.co.jp/weather/jp/13/AreaCode.html

AreaCodeがYahoo!天気内での地域コードとなります。(地域コードの一覧は本記事最後にまとめています)

出力されるデータについて

サンプルコードを実行すると変数rsに下記画像のデータが格納されます。

rs[0]~rs[35]で好きな項目を取得することが出来ます。

おまけ:地域コード表

都道府県 地域 コード
北海道 稚内 1100
旭川 1200
留萌 1300
札幌 1400
岩見沢 1500
倶知安 1600
網走 1710
北見 1720
紋別 1730
根室 1800
釧路 1900
帯広 2000
室蘭 2100
浦河 2200
函館 2300
江差 2400
青森 青森 3110
むつ 3120
八戸 3130
岩手 盛岡 3310
宮古 3320
大船渡 3330
宮城 仙台 3410
白石 3420
秋田 秋田 3210
横手 3220
山形 山形 3510
米沢 3520
酒田 3530
新庄 3540
福島 福島 3610
小名浜 3620
若松 3630
茨城 水戸 4010
土浦 4020
栃木 宇都宮 4110
大田原 4120
群馬 前橋 4210
みなかみ 4220
埼玉 さいたま 4310
熊谷 4320
秩父 4330
千葉 千葉 4510
銚子 4520
館山 4530
東京 東京 4410
大島 4420
八丈島 4430
父島 4440
神奈川 横浜 4610
小田原 4620
新潟 新潟 5410
長岡 5420
高田 5430
相川 5440
富山 富山 5510
伏木 5520
石川 金沢 5610
輪島 5620
福井 福井 5710
敦賀 5720
山梨 甲府 4910
河口湖 4920
長野 長野 4810
松本 4820
飯田 4830
岐阜 岐阜 5210
高山 5220
静岡 静岡 5010
網代 5020
三島 5030
浜松 5040
愛知 名古屋 5110
豊橋 5120
三重 5310
尾鷲 5320
滋賀 大津 6010
彦根 6020
京都 京都 6110
舞鶴 6120
大阪 大阪 6200
兵庫 神戸 6310
豊岡 6320
奈良 奈良 6410
風屋 6420
和歌山 和歌山 6510
潮岬 6520
鳥取 鳥取 6910
米子 6920
島根 松江 6810
浜田 6820
西郷 6830
岡山 岡山 6610
津山 6620
広島 広島 6710
庄原 6720
山口 下関 8110
山口 8120
柳井 8130
8140
徳島 徳島 7110
日和佐 7120
香川 高松 7200
愛媛 松山 7310
新居浜 7320
宇和島 7330
高知 高知 7410
室戸岬 7420
清水 7430
福岡 福岡 8210
八幡 8220
飯塚 8230
久留米 8240
佐賀 佐賀 8510
伊万里 8520
長崎 長崎 8410
佐世保 8420
厳原 8430
福江 8440
熊本 熊本 8610
阿蘇乙姫 8620
牛深 8630
人吉 8640
大分 大分 8310
中津 8320
日田 8330
佐伯 8340
宮崎 宮崎 8710
延岡 8720
都城 8730
高千穂 8740
鹿児島 鹿児島 8810
鹿屋 8820
種子島 8830
名瀬 8840
沖縄 那覇 9110
名護 9120
久米島 9130
南大東 9200
宮古島 9300
石垣島 9410
与那国島 9420
ABOUT ME
ISHICORO
ISHICORO
Author
中小企業で働くシステムエンジニア。年間100日以上の出張生活(国内外)。
記事URLをコピーしました