from selenium import webdriver
import time
import re
import csv
import pandas as pd
# Chromeドライバに環境変数が通っていない場合は引数で指定
driver_path = "/Users/mbp441/Desktop/github/PYTHON/chromedriver"
driver = webdriver.Chrome(driver_path)
# urlを開く
driver.get("https://miraiz.chuden.co.jp/home/electric/contract/payment/calendar/index.html")
# 中部電力の基本検針日が記載された箇所のidセレクタ
nittei_id = ['n01', 'n02', 'n04', 'n05', 'n06', 'n08', 'n09', 'n10', 'n11', 'n12', 'n13', 'n15', 'n16', 'n17', 'n18', 'n19']
# 実検針日(ex.「4月1日」)の数値を取り出す正規表現パターン
p = re.compile('\d+')
csv_all = []
# 開始年度を取得
start_year = driver.find_element_by_css_selector("div #n01 ~div th").text.replace('年', '')
next_year = '{}'.format(int(start_year) + 1)
for nittei in nittei_id:
# 基本検針日(=日程)
kihon_kenshinbi = int(nittei[1:3])
print(f"読込み中...検針日程:{kihon_kenshinbi}")
# 日程idに属する実検針日(4月1日等)の一覧を取り出す
jitsu_kenshinbi_list = driver.find_elements_by_css_selector(f"div #{nittei} ~div:nth-of-type(1) td")
for td_date in jitsu_kenshinbi_list:
jitsu_kenshinbi = td_date.text
# 正規表現で実検針日の月と日の数値を取得
month, day = p.findall(jitsu_kenshinbi)
csv_row = []
csv_row.append(kihon_kenshinbi)
# 実検針日「yyyy/m/d」を作成
if int(month) >= 4:
csv_row.append(start_year + '/' + month + '/' + day)
else:
csv_row.append(next_year + '/' + month + '/' + day)
csv_all.append(csv_row)
driver.quit()
df = pd.DataFrame(csv_all, columns=['基本検針日', '実検針日'])
print(df)