ふと思い立ってPythonをいじったら、思いの外に面白いことができたのでメモ。
初心者向けです。
#やりたいこと
下記の操作をすべて自動で行います。
- ブラウザ(Chrome)を立ち上げる
- Yahoo路線情報を開く
- 東京→新宿を入力して検索
- 一番上に出てきた結果の出発時刻と到着時刻をターミナルに表示する
- ブラウザを閉じる
python3系とpip, Homebrewが使える状態を前提とします。mac使っています。
#ライブラリのインストール
pipとbrewを使ってbeautifulsoup4とSelenium、ChromeDriverをインストール
#BeautifulSoup4とSeleniumのインストール
$ pip install beautifulsoup4
$ pip install selenium
#Selenium ChromeDriverのインストール
$ brew install chromedriver
#Yahoo路線情報を操作するプログラムを書く
selenium-test-yahootransit.py
# coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from bs4 import BeautifulSoup
start = "東京" #出発駅
end = "新宿" #到着駅
print(start + "駅から" + end + "駅への直近の電車を調べます...")
#ブラウザを開く
driver = webdriver.Chrome()
#Yahoo路線情報を開く
driver.get("https://transit.yahoo.co.jp/")
#出発駅と到着駅の入力
driver.find_element_by_id("sfrom").send_keys(start)
driver.find_element_by_id("sto").send_keys(end)
#検索ボタンをクリックする
driver.find_element_by_id("searchModuleSubmit").click()
#検索結果のページのHTMLをBeautifulSoupに流し込む
soup = BeautifulSoup(driver.page_source, "html5lib")
#時間が書かれた部分をCSSセレクタで指定し、テキストを抜き出す
time = soup.select(".routeSummary li.time")[0].select("span")[0].text
#結果を表示する
print("結果:" + time + "です。")
#ブラウザを閉じる
driver.close()