JR 新幹線の予約の空きを見るスクリプト

なんで、こんなことしているか分からんが、作ってしまった。。。

正式なサイトは
http://www.jr.cyberstation.ne.jp/vacancy/Vacancy.html
何だけど、なんとなく一括してみたかったから、ストレス発散もかねて作ってみたw


# ちなみに、サイトに負荷がかかるのかかるので、
# あんまりやらないほうがいいと思いますw
# あと、ちゃんと取れるか保証はないですw

まずは、ページの取得。のぞみか、ひかりで東京から新大阪に行く場合

mkdir tmp
for d in $(seq -f '%02g' 14 20); do 
  for h in $(seq -f '%02g' 6 22); do 
    wget --referer=http://www1.jr.cyberstation.ne.jp/csws/Vacancy.do "http://www1.jr.cyberstation.ne.jp/csws/Vacancy.do?month=08&day=$d&hour=$h&minute=30&train=1&dep_stn=%93%8C%8B%9E&arr_stn=%90V%91%E5%8D%E3" -O tmp/08$d${h}30
 done
done


で、取得したページをTSVに変換

$ awk '$0~"列車名"{f=1} f&&$0~"<tr>"{s=1;print FILENAME} f&&$0~"<TR>" {f=0;s=0} s{print $0}' tmp/* | perl -ne 's/\s*//g; print m!</tr>!?"$_\n":$_' | perl -pe 's!</.*?>!!g; s!<tr>!!; s!<.*?>!\t!g' | perl -F/\\t/ -lane '$F[0]=~s!.*?(\d\d)(\d\d)(\d\d)(\d\d)!$1/$2!; print join "\t", @F[1,0,2,3,4,5,6,7,8]' | sort -u -t $'\t' -k2,3 > jr.tsv

はじめawkでやっていたけど、重複があるのに気がついて、さすがにawkは慣れていないので残りはPerlでw


まあ、気がついたら最初の目的を忘れてたりするけど、それはお約束でw
# そうだ、Uターンラッシュっていつか調べたかったんだよなw