【Python】乗換案内の検索結果をテキストファイルに書き出す【Webスクレイピング】

CODE,Python

Pythonでジョルダンの検索結果をテキストに書き出すスクリプトです。

処理内容 ①検索条件の入力
②検索の実行
③結果件数の取得
④件数分だけ発着時間のテキストを取得
⑤取得した発着時間を外部ファイルへ出力

ジョルダンの乗換案内検索

以下の条件で検索し、その結果をテキストファイルに書き出します。

  • 出発地:新宿
  • 到着地:東京
  • 日時指定:現在時刻

検索画面

検索結果

赤枠内をテキストファイルに書き出します。

PythonによるWebスクレイピングツールの作成

検索結果をテキストに書き出すコードです。
ブラウザ(Chrome)から乗換情報を検索し、結果をテキストファイルに出力します。

環境に合わせて以下を修正してください。

  • ChromeDriverのパス
  • ブラウザの動作を確認したい場合は12行目のヘッドレスモードのオプションをコメントアウト
# ----------------------------------------
# モジュールのインポート
# ----------------------------------------
from selenium import webdriver


# ----------------------------------------
# 変数の設定
# ----------------------------------------
cd_path = 'C:\\ChromeDriver\\chromedriver.exe'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])


# ----------------------------------------
# 処理開始
# ----------------------------------------
print('>>>処理開始')
driver = webdriver.Chrome(cd_path, options=chrome_options)
driver.maximize_window()
driver.implicitly_wait(10)
driver.get('https://www.jorudan.co.jp/norikae/')

# 出発地エリア入力
xpath = '//*[@id="eki1_in"]'
driver.find_element_by_xpath(xpath).send_keys('新宿')
# 到着地エリア入力
xpath = '//*[@id="eki2_in"]'
driver.find_element_by_xpath(xpath).send_keys('東京')
# 検索ボタンクリック
xpath = '//*[@id="search_body"]/div[3]/input'
driver.find_element_by_xpath(xpath).click()
e_cnt = driver.find_elements_by_class_name('t1')

# 出力処理
with open('timetable.txt', 'w', encoding='utf8') as f:
    for i in range(len(e_cnt)):
        xpath = '//*[@id="Bk_list_tbody"]/tr[' + str(i + 1) + ']/td[2]'
        f.write(driver.find_element_by_xpath(xpath).text + '\n')


# ----------------------------------------
# 処理終了
# ----------------------------------------
print('<<<処理終了')
driver.quit()

実行結果

実行すると以下のようにtimetable.txtファイルを出力します。

参考書

技術を確実にするならやはり書籍が頼れます。

CODE,Python

Posted by junichi