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やタイトルで、正常/エラーの判定が可能です。

出力画面のURLhttps://transit.yahoo.co.jp/search/result?from=出発駅&to=到着駅& ~
入力画面(エラー時)のURLhttps://transit.yahoo.co.jp/?from=出発駅&to=到着駅& ~

となりますので、「search/result」という文言の有無で判断可能です。

完成シナリオ

操作シナリオ
説明
1変数 ^row にExcelの行番号を格納します(初期値は2)
2WHILE文:ExcelシートのA列が「ブランクでない」間、WENDまでの処理を繰り返します。
3Yahoo!路線情報にページ遷移します。
3~15Excelシートの内容を入力
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列に出力
48Excelシートの行を1進める。

出力結果

出力結果

1件ずつ入力する場合

ループを使わない場合は、WHILE文と変数 ^row は不要になります。Excelシートの1行分を入力して、その都度、検索結果を見ることができるので、並行して作業を進めることができます。

  1. 元のシナリオをコピーして、1,2行目、48,49行目を削除。
  2. 「^row」を「2」に置換
^rowを2に置換

操作シナリオ

1件ずつ入力するシナリオ

次の行に移動

次の行に移動するには、ヘッダーの行送りボタンを使用します。

Excelシートの行が2から3に切り替わる。

ダウンロード

シナリオと入力データのファイルです。

シナリオ:transit.xml

Excelシート:交通費.xlsx

WinGoferからシナリオファイルをOPENし、Excelタブで入力シート、出力シートを指定してしてください。