気温データの自動取得

投稿者: | 2022-04-17

import time
from pathlib import Path
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

# ダウンロード先フォルダの指定
dldir_path = Path('/Users/mbp441/Desktop/tenki')  # csv という名前のフォルダとする
dldir_path.mkdir(exist_ok=True)  # なければ作成
download_dir = str(dldir_path.resolve())  # 絶対パスを取得
print("download_dir: " + download_dir)

options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {    # Chrome のオプションに
  'download.default_directory': download_dir  # 絶対パスで指定  
})


driver_path = '/Users/mbp441/Desktop/github/PYTHON/chromedriver'
driver = webdriver.Chrome(executable_path=driver_path, options=options)

wait = WebDriverWait(driver, 10)  # 明示的待機用 (Timeout 10秒)

# 自動操作開始
driver.get('https://www.data.jma.go.jp/gmd/risk/obsdl/index.php')

# 「地点を選ぶ」
xpath = '//div[@class="prefecture" and text()="東京"]'
time.sleep(2)
driver.find_element_by_xpath(xpath).click()

xpath = '//div[@class="station" and contains(@title, "地点名:東京")]'
time.sleep(2)                                
driver.find_element_by_xpath(xpath).click()

# 「項目を選ぶ」
driver.find_element_by_id('elementButton').click()

xpath = '//span[text()="月別値"]/preceding-sibling::input' #XPATH参照
time.sleep(2)
driver.find_element_by_xpath(xpath).click()

css = '#日最高気温の平均'
time.sleep(2)
driver.find_element_by_css_selector(css).click()

# 「期間を選ぶ」
driver.find_element_by_id('periodButton').click()

time.sleep(2)
# <select>内の<option>要素を選択
Select(driver.find_element_by_name('iniy')).select_by_value('2010')
Select(driver.find_element_by_name('inim')).select_by_value('1')
time.sleep(2)  # いったん止めてみる
Select(driver.find_element_by_name('endy')).select_by_value('2019')
Select(driver.find_element_by_name('endm')).select_by_value('12')
time.sleep(2)

# 「CSVファイルをダウンロード」
driver.find_element_by_id('csvdl').click()
time.sleep(2)

driver.quit()