IE以外のブラウザに対応しました。

「UWSC」というツールを使って、楽天ウェブ検索を自動化する記事を紹介しました。
自動化で超らくちんです。
しかし、楽天ウェブ検索のためだけに新たにツールをダウンロードするのが難点です。
そこで、Windows標準装備の「PowerShell」で検索自動化第二弾を用意しました。
相変わらずの制約
相変わらず、OSはWindows、ブラウザはInternet Explorer(以下IEとします)限定です。
Windows10、IE11で確認しています。
自動化の仕組み
人力検索の”検索キーワード入力→検索実行→検索キーワード入力→検索実行・・・”の単純作業をスクリプトが自動でやってくれます。
スクリプトを実行すると、IEの起動~検索実行~IEの終了まで自動です。
検索にかかる時間
30口分の検索をするのに、およそ1分半くらいです。
検索結果の反映待ちに時間をとっています。
PCやネットの状況で待ち時間は変わります。
超速環境、逆の激遅環境にあわせてスクリプトの待ち時間設定を変更できます。
自動化の方法
スクリプトの準備
スクリプトはこんな感じです。
コピーして適当なファイル名で保存してください。
保存場所も制限はありません。
ただし、ファイルの拡張子は「.ps1」がお約束。
#
# 楽天ウェブ検索自動化・・・PowerShell版 ('ω')ノ
#
# ページの読み込み待ち(今の設定は3000ミリ秒 ※IEの更新が遅い時は数字を増やす)
function Wait-ReLoad($ie)
{
# ページの読み込みが終わるまで待機する
while ($ie.busy -or $ie.readystate -ne 4) {Start-Sleep -Milliseconds 3000}
}
# 楽天ウェブ検索のトップページ検索 ※ちょいちょい変えてくれる
function Search-TopRakuten($doc,$keywd)
{
if ($doc -ne $null)
{
# 検索テキストボックスの探して、情報を取得
$textbox =$doc.getElementById('search-input')
if ($textbox -ne $null) {$textbox.value = $keywd}
# 検索ボタンを探して、クリックする
$buttons = $doc.getElementById('search-submit')
if ($buttons -ne $null){$buttons.click()}
# ページの更新待ち
Wait-ReLoad $ie
}
}
# 楽天ウェブ検索の結果リストページ検索
function Search-ResultRakuten($doc,$keywd)
{
if ($doc -ne $null)
{
# 検索テキストボックスの探して、情報を取得
$textbox =$doc.getElementById('srchformtxt_qt')
if ($textbox -ne $null) {$textbox.value = $keywd}
# 検索ボタンを探して、クリックする
$buttons = $doc.getElementById('searchBtn')
if ($buttons -ne $null) {$buttons.click()}
# ページの更新待ち
Wait-ReLoad $ie
}
}
# 30口の検索を実行するメイン処理
# URLの設定
$url = "https://websearch.rakuten.co.jp/"
# IEを起動する
$ie = New-Object -ComObject InternetExplorer.Application
if ($ie -ne $null)
{
# IEを表示
$ie.Visible = $true
# 楽天ウェブ検索を開く
$ie.Navigate($url, 4)
# ページの読み込みが終わるまで待機
Wait-ReLoad $ie
# 楽天ウェブ検索のトップページの情報を取得する
$doc = $ie.Document
# 楽天ウェブ検索のトップページで検索する
Search-TopRakuten $doc "最初の検索" # "〇〇〇" は検索する文字に変更してください
# 初回の検索結果リストのページの情報を取得する
$doc = $ie.Document
# 2回目~の検索をする
Search-ResultRakuten $doc "02番目の検索" # "〇〇〇" は検索する文字に変更してください
Search-ResultRakuten $doc "03番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "04番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "05番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "06番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "07番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "08番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "09番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "10番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "11番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "12番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "13番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "14番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "15番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "16番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "17番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "18番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "19番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "20番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "21番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "22番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "23番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "24番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "25番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "26番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "27番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "28番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "29番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "30番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "31番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "32番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "33番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "34番目の検索" # ↑ 同上 ↑
Search-ResultRakuten $doc "35番目の検索" # ↑ 同上 ↑
# IEを終了する \(^o^)/
$ie.Quit()
$ie = $null
}
このスクリプトに少し手を加えてください。
検索するキーワードを更新してください。
「”〇〇〇” は検索する文字に変更してください」の行が修正対象です。
”02番目の検索”などのダブルクォーテーションに挟まれた言葉を直します。
こんな感じ。
Search-ResultRakuten $doc "柴犬" # "〇〇〇" は検索する文字に変更してください
Search-ResultRakuten $doc "ポメラニアン" # ↑ 同上 ↑
Search-ResultRakuten $doc "塩辛" # ↑ 同上 ↑
ちょっと数ありますが、がんばってください。
スクリプトの実行
いよいよスクリプトの実行です。
スクリプトのファイルをマウスで右クリックします。
コンテキストメニューの「PowerShellで実行」を選択、マウスで左クリック。

これでスクリプトの実行が始まります。
青っぽいコマンドプロンプト的なPowerShellウィンドウが開いて、IEが立ち上がります。
あとは、次々と自動で検索が実行され、終わるとPowerShellとIEのウィンドウが閉じます。

うまく検索できない時
どうも検索ができない?となった時のあるあるです。
検索結果の更新に時間がかかっている
検索結果の更新に時間がかかると、スクリプトの待ち時間がタイムアウトします。
通信やPCの負荷が影響します。
スクリプトの待ち時間を調整してみてください。
数字”3000”が待ち時間です。単位はミリ秒です。
待ち時間を5秒にする場合は”5000”に修正します。
# ページの読み込み待ち(今の設定は3000ミリ秒 ※IEの更新が遅い時は数字を増やす)
function Wait-ReLoad($ie)
{
# ページの読み込みが終わるまで待機する
while ($ie.busy -or $ie.readystate -ne 4) {Start-Sleep -Milliseconds 3000}
}
楽天が検索ページを変更している
頻繁に変えてくれちゃいます。
検索テキストボックスや検索ボタンのIDとかが急に変わったり。
UWSC自動化では、スクリプト何度も変更しました。
スクリプトのgetElementByIdのあたりが修正対象ですが、IDじゃなくたったり・・・
こうなった場合は、ブラウザで要素を調べていくしかないですね~
どうかこのままで・・・
楽天ポイントの付与がだんだんとショボくなっている今日この頃。
楽天ウェブ検索はいつまで続けてくれるのでしょうか?どうかこのままで・・・
コメント