Yahoo!路線情報を自動化
WinGoferでは、Gridシートのセルを編集して操作手順を記述します。セルのコピー、独自のXPath編集ツールを使用すれば、驚くほど早く操作シナリオを作成することができます。
Excelシート
- 経路情報と日付を入力項目として、安い順と早い順の時間/金額を出力します。
- 他府県にある同じ名前の駅や、あいまい検索で駅名がヒットすることがあるので、検索結果の経路情報をT列に出力するようにします。
Excelシートの指定
WinGoferのExcelタブで入出力シートを指定します。
操作シナリオ作成
各画面の入出力項目、HTML文書から対象項目を特定するためのXPath、入力値を定義します。
入力画面
XPath取得ツールでテキスト欄を右クリックすると、テキストボックスではなく灰色の説明文(プレースホルダ)が取得されますので、いったん左クリックして説明文を消してから、右クリックします。
項目 | XPath | 入力値 |
---|---|---|
出発駅 | //form[@name="search"]/dl[1]/dd/input[@id="query_input"] | 入力シート:C列 |
到着駅 | //form[@name="search"]/dl[2]//input[@id="query_input"] | 入力シート:D列 |
経由1 | //li[@id="via01"]//input[@id="query_input"] | 入力シート:E列 |
+ボタン(経由2を開く) | //li[@id="via01"]//span[1] | 入力シート:F列 |
経由2 | //li[@id="via02"]//input[@id="query_input"] | 入力シート:F列 |
日時(年) | //select[@id="y"] | 入力シート:B列 |
日時(月) | //select[@id="m"] | 入力シート:B列 |
日時(日) | //select[@id="d"] | 入力シート:B列 |
時刻(時) | //select[@id="hh"] | 固定値:9時 |
時刻(分) | //select[@id="mm"] | 固定値:0分 |
Radio選択(出発) | //input[@id="tsDep"] | 固定値:CLICK |
運賃種別 | //select[@id="ticket"] | 固定値:現金(きっぷ)優先 |
座席 | //select[@id="expkind"] | 固定値:指定席優先 |
歩く速度 | //select[@id="ws"] | 固定値:少しゆっくり |
表示順序 | //select[@id="s"] | 固定値:料金が安い順 |
空路 | //input[@id="air"] | 固定値:OFF |
新幹線 | //input[@id="sexp"] | 固定値:ON |
有料特急 | //input[@id="exp"] | 固定値:ON |
高速バス | //input[@id="hbus"] | 固定値:OFF |
路線/連絡バス | //input[@id="bus"] | 固定値:OFF |
フェリー | //input[@id="fer"] | 固定値:OFF |
検索ボタン | //input[@id="searchModuleSubmit"] | 固定値:CLICK |
出力画面
項目 | XPath |
---|---|
経路 | //h1[@class="title"] |
所要時間1 | //ul[@id="rsltlst"]/li[1]//span[@class="small"] |
金額1 | //ul[@id="rsltlst"]/li[1]//li[@class="fare"] |
所要時間2 | //ul[@id="rsltlst"]/li[2]//span[@class="small"] |
金額2 | //ul[@id="rsltlst"]/li[2]//li[@class="fare"] |
所要時間3 | //ul[@id="rsltlst"]/li[3]//span[@class="small"] |
金額3 | //ul[@id="rsltlst"]/li[3]//li[@class="fare"] |
到着時刻順も表示したいので、リンクをクリックします。
項目 | XPath | 入力値 |
---|---|---|
到着時刻順 | //ul[@id="tabflt"]/li[1]/a | 固定値:CLICK |
エラー画面
エラー時は、画面上部にエラーメッセージが表示されます。
項目 | XPath |
---|---|
エラーメッセージ | //div[@id="error-text"]/p |
正常/エラーの判定
正常時は出力画面が表示され、エラー時は画面遷移しませんので、ブラウザのURLやタイトルで、正常/エラーの判定が可能です。
出力画面のURL | https://transit.yahoo.co.jp/search/result?from=出発駅&to=到着駅& ~ |
入力画面(エラー時)のURL | https://transit.yahoo.co.jp/?from=出発駅&to=到着駅& ~ |
となりますので、「search/result」という文言の有無で判断可能です。
完成シナリオ
行 | 説明 |
---|---|
1 | 変数 ^row にExcelの行番号を格納します(初期値は2) |
2 | WHILE文:ExcelシートのA列が「ブランクでない」間、WENDまでの処理を繰り返します。 |
3 | Yahoo!路線情報にページ遷移します。 |
3~15 | Excelシートの内容を入力 |
7~10 | シートのF列(経路2)が「ブランクでない」時、+ボタンをクリックして、経路2の入力欄を表示します。 |
11~15 | シートの移動日(形式:yyyy/m/d)の値を、yyyy年・m月・d日に変換して、SELECT選択します。 |
16~28 | 固定値を入力 |
29 | 検索ボタンをクリックして、ページ遷移 |
30 | 正常/エラー判定 遷移先のURLに「search/result」が含まれていれば、31~44までを実行。 含まれていなければエラーと判定し、46行目でエラーメッセージを取得し、ExcelシートのT列に出力。 |
31 | 検索された経路情報をExcelシートのT列に出力 |
32~37 | 料金が安い順の結果をH列~M列に出力 |
38 | 「到着時刻順」をクリック |
39~44 | 到着時刻順の結果をN列~S列に出力 |
48 | Excelシートの行を1進める。 |
出力結果
1件ずつ入力する場合
ループを使わない場合は、WHILE文と変数 ^row は不要になります。Excelシートの1行分を入力して、その都度、検索結果を見ることができるので、並行して作業を進めることができます。
- 元のシナリオをコピーして、1,2行目、48,49行目を削除。
- 「^row」を「2」に置換
操作シナリオ
次の行に移動
次の行に移動するには、ヘッダーの行送りボタンを使用します。
ダウンロード
シナリオと入力データのファイルです。
シナリオ:transit.xml
Excelシート:交通費.xlsx
WinGoferからシナリオファイルをOPENし、Excelタブで入力シート、出力シートを指定してしてください。