性格いい人が優勝

VBAを使ってgoogleのキーワード検索結果に表示される10文字程度の文字列を取得する作業を
検索キーワードを変化させて200件ほど取得しようと考えております。
(当然200回googleへのアクセスとなります)


以下のコードをdo untilで実行し、
変数"hogehoge"には"URL;https://www.google.co.jp/search?q=(任意のキーワード)"を代入します。

(任意のキーワード部分は200種類あります。)



-------------------------------------
With Sheets("web").QueryTables.Add( _
Connection:=hogehoge, _
Destination:=web.Cells(1, 1))
.WebSelectionType = xlEntirePage
.Refresh BackgroundQuery:=False
.Parent.Names(.Name).Delete
.Delete

End With
-------------------------------------
Destinationであるweb.Cells(1, 1))には検索結果ページが丸ごと入るので、
ここから欲しい文字列を正規表現で抜き取り、別のセルに移し替えます。


これにより別のセルに欲しい文字列(10文字程度)がどんどん追加されるのですが、
40件前後の取得を実行すると様々な理解不能なエラー文が出てきて停止してしまいます。


エラー文の例
---------------------------------------------------
エラー1004
サイトへのリクエストが正しくありません
---------------------------------------------------
実行時エラー 91
オブジェクト変数またはwithブロック変数が設定されていません
---------------------------------------------------


エラーで止まった直後に再度実行しても同じエラーが出て動きませんが
VBAを完全に終了させて、2~30分放置した後何気なく開始してみるとまた動き始めて、
40件程度取得し始めますが、再度同じエラーで停止します。
何が何だかさっぱりです、、、


このような作業はVBAに向かないという事なのでしょうか?
それとも上記のコードになにかおかしな点があるのでしょうか?


apiを使うべきだとも考えておりますが是非この方法でなんとかしたいと考えております。

大変お手数ですがお分かりになる方ご教示願いませんでしょうか?
よろしくお願いします。

A 回答 (1件)

サーバー(google)側で、接続拒否されているのでは。



1)リクエスト間隔を大きくする。
2)例外発生のときは、リトライする。
3)検索文字列をOr検索に切り替えて、リクエスト回数を減らす。
――ようにしてみるとか。
    • good
    • 0
この回答へのお礼

見事改善されました
ありがとうございます。

お礼日時:2012/10/08 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!