iMacrosはTAGコマンドを使ってリンクや画像をクリックすることが出来ます。ポイントサイトのクリック記事で、画像のクリックの方法をお伝えしたので、今度は日本最大のポータルサイトのYahooの記事をクリックする方法をお伝えします。POSとXPATHの使い分けを実践してみましょう。
Yahooのサイト
クリックするのはYahooのポータルサイトの上部にあるニュースの部分のリンクです。この部分はかなり頻繁に更新されていて、ニュースのヘッドラインが表示されていますね。ちょっと見辛いですが、破線で囲んだ左上に “12時22分更新” と書かれています。このリンクを全部クリックするプログラムをiMacrosとJavascriptで作ってみましょう。
プログラム作成
ではプログラムを作っていきます。
TAGの解析
まずはiMacrosのTAGコマンドを使うための、対象とするTAGの解析から行いましょう。まずはiMacrosで動作記録を行なってTAGコマンドを作って見ましょう。次の動画のように記録しますよね。
記録したTAGコマンドは次の様にPOSコマンドで、属性ATTRはTXTを使っています。
TAG POS=1 TYPE=A ATTR=TXT:列車が事故<SP>パトカーで試験へ動画NEW
上の画像から時間が経っているのでニュースのヘッドラインが変わっていますが、リンクのテキストは下の画像のニュースのタイトルと同じですね。
では実際のTAGをFirefoxの開発ツールで調べましょう。Yahooのリンクを選択すると、下の画像のように開発ツールでHTMLのタグが青く選択されます。
このAタグ部分だけを見ると以下の様になっていますね。
<a href=”https://rdsig.yahoo.co.jp/_ylt=A2Ri8AcvhVlamyUA72aJBtF7/RV=2/RE=1515902639/RH=cmRzaWcueWFob28uY28uanA-/RB=XuVl34MupZp53LANJ4fhmwUTMRQ-/RU=aHR0cHM6Ly9uZXdzLnlhaG9vLmNvLmpwL3BpY2t1cC82MjY4MjQ5AA–/RK=0/RS=MDemRixA3daC.jyD5OUberLL35s-“>列車が事故 パトカーで試験へ<span class=”iconVideo” title=”動画”>動画</span><span class=”iconNew” title=”NEW”>NEW</span></a>
少し見辛いですが、このAタグの属性はhrefとTXTしかありません。更にこの二つは新しいニュースのたびに変化するものですね。ということで、先ほど記録したiMacrosのPOSを使ったTAGコマンドでは、ニュースが更新されるとクリック出来なくなります。
このようにTAGの属性が変化するものの場合は、POSとXPATHの使い分け記事で説明したとおり、POSではなくXPATHを使いましょう。
XPATHを作る
ではAタグの示すまでのタグの構造を見てみましょう。
Aタグから上に辿っていくと、下の図の様な構造になっていますね。分かりやすいように右側の画像で考えましょう。緑色のdivやulタグには変化しにくいidやclass属性が設定されています。それではこの属性を使ってXPATHを作って見ましょう。
XPATHの作り方で説明したように、変化しにくいidやclassがある緑のタグを基準に作ります。ということでXPATHは以下の4つが出来ます。
- //div[@id=”topicsboxbd”]/div[1]/div[1]/ul[1]/li[1]/a”
- //div[@id=”topicsfb”]/div[1]/ul[1]/li[1]/a”
- //div[@class=”topicsindex”]/ul[1]/li[1]/a
- //ul[@class=’emphasis’]/li[1]/a
今回は一番短くかける4番目のXPATHでプログラムを作りましょう。
iMacrosのTAGコマンド
先ほどのXPATHを使ってTAGコマンドを作りましょう。次のようになりますね。
XPATHで繰り返し
XPATHで同じ種類のタグを表すときは、タグの後ろのある[ ]の数字を変更することで出来るようになります。
他のニュースを表す構造がどうなってか見るために、ulタグを<ul> から</ul>を見ると次のようになっていますね。ul直下にliが並んでいることが分かります。
ここから二つ目のリンクをクリックするTAGコマンドは次のようになりますね。liの後ろの[ ]内の数字が2になっていますね。つまり、他のリンクをクリックするには、liの数字を変更すれば良いことになります。
全てのニュースリンクをクリックするプログラム
ではJavascriptと連携させたプログラムを作りましょう。
今回はニュースリンクの数が8と決まっているので、他のリンクのクリックは決まった数を繰り返すFor文で行います。
それから、リンクをクリックするとそのタブでリンクを開くので、一度Yahooのポータルサイトへ戻るために “BACK” コマンドを使用します。
iMacrosを途中で止めるために、Stopボタンを押した時の処理を加えましょうね。
以上を考えたリンクをクリックするプログラムは、次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var macro = "CODE:"; macro += "URL GOTO=https://www.yahoo.co.jp/ \n"; iimPlay(macro); repeat:for(var i = 1; i <= 8; i++) { var macro = "CODE:"; macro += "TAG XPATH=\"//ul[@class='emphasis']/li[" + i + "]/a\" \n"; macro += "WAIT SECONDS=2 \n"; macro += "BACK \n"; var ret_code = iimPlay(macro); if(-101 == ret_code) { break repeat; } } |
動作させると以下の動画のように、Yahooのニュースリンクを自動的に次々とクリックするしていきます。
ということで、Yahooのニュースリンクを全部クリックするiMacrosのプログラムが出来ました。
今回はXPATHでサイトのタグをクリックする具体例でした。