PythonでくらしTEPCOをスクレイピングしてみた
Abstract
PythonからくらしTEPCO|東京電力のご家庭向け無料Webサービスにログインして、ページ内のユーザー情報を取得してみた。
Introduction
最近、自宅の電力計がスマートメーター化された。で調べてみると、使用電力の30分値が計測されていてデータも取得できるらしい。 www.tepco.co.jp どうせならデータをすべて手元に置いて、分析(の真似事)をしてみたい。 まずはPython経由でくらしTEPCOにログインし、ログイン後に表示されるページのデータを取得する方法を調べてみた。
Setup and Results
前準備
- htmlを解析するため、Beautifulsoupというライブラリをインストール。
pip install beautifulsoup4
くらしTepcoのアカウントを作成しておく。
ログイン情報は設定ファイルから読み込む方式とした。 (本当は環境変数にしたほうが良いのでしょうが。) .passwordという名前で、くらしTEPCOにログインするためのIDとPasswordを書いた以下の設定ファイルを用意しておく。
[settings] username = my_username password = my_password
どこにアクセスすればログインできるのか?
https://www.kurashi.tepco.co.jp/のログインフォームを見てみるとこんな感じ。
要は、https://www.kurashi.tepco.co.jp/kpf-login に対して、
- ACCOUNTUID:
- PASSPWORD:
- HIDE_URL: /pf/ja/pc/mypage/home/index.page?
- LOGIN': EUAS_LOGIN
をPOSTしてやれば良いみたい。
コード
import configparser import requests from bs4 import BeautifulSoup #IDとパスワードをファイルから読み込み config = configparser.ConfigParser() config.read('.password', 'UTF-8') username = config.get("settings", 'username') password = config.get("settings", 'password') # くらしtepcoにログイン session = requests.Session() param = { 'ACCOUNTUID': username, 'PASSWORD': password, 'HIDEURL': '/pf/ja/pc/mypage/home/index.page?', 'LOGIN': 'EUAS_LOGIN', } login = session.post( 'https://www.kurashi.tepco.co.jp/kpf-login', data=param) login.encoding = login.apparent_encoding #ログインページのhtmlから、フッタに書いてあるユーザー情報を取り出してみる html = BeautifulSoup(login.text, "html.parser") for element in html.find("footer").find_all("input"): print(element["name"], element["value"])
実行結果
契約者名とか契約者住所が取得できた。
Conclusion
これでログインが必要なWebサイトであっても、ログイン後の情報がPython経由で取得することができた。 実際のブラウザ上でどのようなアクセスをしているかを一つ一つ確認して、それをプログラム上で再現していく方法が一番早かった。 次は、使用電力量を取得するところまで試してみたい。