【Python】電車の空席確認ができるか試してみた

 

Pythonのseleniumを使って、えきねっと(電車の予約サイト)の空席確認ができるか試してみました。

もちろん対策されているだろうなと思いつつ、一応検証コードを書いてみた感じです。

 

[toc]

対象にするサイト

 

電車のサイトはなんでも良いのですが、今回はJRのえきねっとの予約サイトで試してみます。

 

 

手順としては、

  1. 日時を入れる
  2. 路線を入れる
  3. 乗車駅と降車駅を入れる
  4. 「空席を調べる」を押す

 

この辺りを自動化するコードを書いてみます。

 

コード

 

from selenium import webdriver
from selenium.webdriver.support.ui import Select


driver = webdriver.Chrome("/Users/haru/PycharmProjects/himatesuto/chromedriver")
driver.get("https://www.eki-net.com/pc/personal/yoyaku/wb/Common/ReserveTop/ReserveTop.aspx")


book_time = {
    'CboDepMonth1' : '2',
    'CboDepDay1'   : '10',
    'PlGetOnTime1'  : '13',
    'PlGetOnMinute1':  '30',
    'CboTrainCategory': '6', #中央線特急
    'CboDepStation1':   '3', #新宿
    'CboArrStation1':   '22' #甲府
}


for k, v in book_time.items():
    element = driver.find_element_by_name(k)
    element_select = Select(element)
    element_select.select_by_value(v)


elem_search_btn = driver.find_element_by_id("BtnVacantInquirySearch")
elem_search_btn.click()

 

予約する日時や路線はなんでも良いですが、適当に設定します。

辞書の中身は「要素の名前:設定値」としています。辞書にしておくと、繰り返しで処理できるのでコードが簡素化できます。

`find_element_by_name`は要素の名前で要素を検索し、

`find_element_by_id`は要素のIDで要素を検索するメソッドです。

要素の名前は、クロームの検証ツールを使って確認してください。確認したいウェブサイトで「右クリック」→「検証」でできます。

 

実行結果

 

 

サービスが利用できません、というエラーメッセージが返ってきました。

ブラウザの自動化ツールには対応しているようです。

 

最後に

 

チケット予約のサイトって、セキュリティ対策がされていないとプログラムなどのボットで自動予約されてしまい、一般の人が予約しづらくなってしまいます。

今回のサイトは大手のサイトだったので対策されていましたが、世の中には対策されていないサイトも普通にあると思います。サイトのセキュリティを担保するためにも、ブラウザのチェックは重要ですね。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog