Python3から京急の運行情報を取得する
今年の8月に開催されたMaker Faire Tokyo 2018で、
京急の運行情報を表示するガジェットを見ました。
僕は実家が京急沿線なのですが、展示してた方は最寄り駅が2駅くらい違うだけでした。
ググってみたら、ディスプレイ部分への表示はさておき
京急のHPから運行情報を読んでくるのは割と簡単そうだったので試してみました。
参考にしたのはこちらのサイト。
関数名も含めてほとんどコピペしただけですが
Python3で実装するために関数名やimportするモジュール名を変更しています。
Pythonの標準モジュールを使い、京急のHPのhtml内の
運行情報に相当する部分(class : unko-panel)を読んで(パースして)きます。
うんこーぱねる。
ついでに読んできた運行情報をslackへと投げてみました。
ソースコードはこんな感じ。
# -*- coding: utf-8 -*- import urllib.request, urllib.error, urllib.parse import slackweb from html.parser import HTMLParser unko = "" class UnkoParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.flag = False def handle_starttag(self, tag, attrs): if tag == "div": attrs = dict(attrs) if 'class' in attrs: className = attrs['class'] if className == 'unko-panel': #URL内のclass=unko-panelを読んでくる self.flag = True def handle_data(self, data): if self.flag: global unko unko = unko + data def handle_endtag(self, tag): self.flag = False url = "http://unkou.keikyu.co.jp/" response = urllib.request.urlopen(url) parser = UnkoParser() parser.feed(response.read().decode('utf-8')) print(unko.replace("\n", "")) KEIKYU = slackweb.Slack(url="https://hooks.slack.com/services/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") KEIKYU.notify(text=unko) response.close()
実行させると京急の運行情報ページを読んできて
slackへと投稿します。ついでにアイコンも京急っぽくしてみました。
遅延が発生した時だけslackに投稿したりできるようにすれば、自分でどっかにアクセスしたり
Twitterとかに貼り付いてなくても受動的に遅延情報を取得することができます。
まあ、今は京急ユーザーじゃないんですけどね・・・