mozyのかきおき

mozyの読書感想文や思考置き場

Pandasを使って時刻表をスクレイピングしてみる

やること

つくばエクスプレス(TX)の快速のみ、次の発車時刻までカウントダウンするAppleWatchアプリが作りたいなと思っている。

必要なこと

AppleWatchを買う*1

TXの時刻表をスクレイピングしてくる。

AppleWatchアプリを作る。

やったこと

AppleWatchは届いていないのでデータの準備をしておく。

データがなければ始まらない。とりあえずは、TXの時刻表をスクレイピングしてみた。

スクレイピングをするには、BeautifulSoupやScrapyなど、色々なツールを使うと良いようだ。以下のページに詳しくまとまっているので参考にすると良さそう。

orangain.hatenablog.com

今回は、pythonのライブラリ、Pandasを使う。

なぜPandasかというと、もともとデータ操作が色々できるライブラリなのだけど、URLを指定したらwebサイトから直接データ入力も可能らしいということを知ったので使ってみたいと思う。すごいな、Pandas。知らなかったよ。

Pandasについてはここら辺を参照

10分でPandasを学ぶは大変良い。最高にわかりやすい。

qiita.com

Python Data Analysis Library — pandas: Python Data Analysis Library 

コード例

今回は以下のページを対象にスクレイピングしてcsvファイルに固めてみる。

列車別時刻表(平日上り) | 列車別時刻表 | 時刻表・運賃 | つくばエクスプレス

import pandas



url = "http://www.mir.co.jp/timetable/weekday_up.html" # TX平日上り

fetched_df = pandas.io.html.read_html(url)

print(fetched_df[0])
fetched_df[0].to_csv('output.csv'

これで同じディレクトリ内にoutput.csvが生成されていると思う。結構簡単にできました。データを見てみると、多少ずれているけれども、使えるデータがサクッと取得できたかなと思う。

f:id:mozy_ok:20170623205052p:plain

けつろん

webページにtable要素がある場合、PandasでURLを指定すればスクレイピングは容易にできるってことがわかりました。

みんなもサクッとスクレイピングでよしなにデータをつくりましょう。

*1:一番難しい