

Autoit+SeleniumBasicでGoogleを検索語付きで検索し、自分のURLが何番目に表示されるかを調べたいと思います。ブログがGoogle検索で何位?
AutoitはBasic言語に似た文法で初心者にもわかりやすいと思います。
:_Autoitの入門記事
最初にしなければいけないこと
Googleの検索で表示される数を100個に変更し、いっぺんに調べようかと思いますしたがうまくゆきませんでした。
Seleniumで立ち上がるChrome違う?ログインしてるのに立ち上がるChromeはログインしていない。なので100の設定が反映されません。
下にあるページボタンを押さないとダメみたいです。

Seleniumで動かすブラウザの内容と普通にブラウザで検索した結果は違うようです。
ChromeDriverは常に、最新のものを使わないとエラーになる

Google Chromeのブラウザ更新したら、必ず動くかどうかチェックしてください。
動かないときは、ChromeブラウザのVersionをチェックし、合うDriverを入れてください。
URLのオプション 検索語と日本語のみ
$url = “https://www.google.com/search?q=” & $searchword & “&lr=lang_ja”
“&lr=lang_ja” =の前後に空白スペースは入れないこと
対称HTMLでたまに、不規則なものがある

Xpathで指定しても、それがない時がある。エラー処理が必要。スキップするようにしないとダメ
情報取得のタグ・Class・XPath選ぶのを迷います。常にあるものを探すのが大変
いままで考えたコード
#include <Array.au3>
;Chrome 別のWindowで開く0
Local $myweb = "take-web"
Local $i = 0, $k = 3, $yn = 0, $cnt, $rank = 0
Local $drive = ObjCreate("selenium.ChromeDriver")
Local $searchword = inputBox("","","autohotkey")
Local $url = "https://www.google.com/search?q=" & $searchword & "&lr=lang_ja"
$drive.Get($url) ;// URLを開く
;Local $getText = $drive.FindElementByXPath('//*[@id="rso"]/div/div[1]/div/div/div[1]/a').Text()
;// ""は' 'で囲む .Text() テキスト取得
;Local $yn = StringInStr($getText, $myweb)
While $k <= 10
$cnt = $drive.FindElementsByClass('yuRUbf').Count
;// 複数あるもの Elements s必要 数はCountで取得
;MsgBox("","",$cnt,2)
$i = 0
While $yn = 0
$i = $i + 1
;$getText = $drive.FindElementByXPath('//*[@id="rso"]/div/div[' & $i & ']/div/div/div[1]/a/div/cite').Text()
;$getText = $drive.FindElementByXPath('//*[@id="rso"]/div/div[' & $i & ']/div/div/div[1]/a').attribute("href")
Local $getText = $drive.FindElementByXPath('(//div[@class="yuRUbf"])[' & $i & ']/a').attribute("href")
'// class名を複数のところで使っている時 (div[class="~~"])[i]/a i +1 配列のように使う
$yn = StringInStr($getText, $myweb)
MsgBox("","",$getText,2)
If $yn <> 0 Then
$rank = + $i
MsgBox("","",$rank & " 位")
Exit
EndIf
If $i = $cnt Then
ExitLoop
EndIf
WEnd
MsgBox("","",($k-1) & " page",2)
$drive.FindElementByXPath('//*[@id="xjs"]/table/tbody/tr/td[' & $k & ']/a').Click
;$drive.FindElementByXPath('//*[@id="xjs"]/table/tbody/tr/td[3]/a').Click()
$k = $k +1
$rank = + $i
WEnd
MsgBox("","",$i) ;// ないと消えてしまう
コメント