私は複数のウェブサイトからデータを削り取り、それらのそれぞれから特定のタグの内部テキストを引き出しています。コードは次のように行く:VBA/Excel - 複数のウェブサイトのスクレイプが重複を返す
For Each x In Range("C2:C30")
If x <> Blank Then
With Web
.navigate Cells(x.Row, 3).Value
End With
Do While Web.Busy
DoEvents
Loop
Set Doc = Web.document
Set AllClass = Doc.getElementsByClassName("name")
On Error Resume Next
vName = AllClass(0).innerText
Cells(x.Row, 1).Value = vName
Next x
は今、この作品、しかし、それはランダムに重複した結果を返します。ループの始めに「DoEvents」が挿入されているにもかかわらず、情報を取り込む前にページ全体が正しく読み込まれていないようです。例えば、私は5社のWebサイトから次の情報を取得する必要があります。
- ボブ
- ジョン
- ジェーン
- ジョー
- ハンク
私が取得する代わりに
このようなもの(ランダムに変化する):
- ボブ
- ジョン
- ジョン
- ジョー
- ハンク
、ランダムにもたらすであろう、再びマクロを実行:
- ボブ
- ジョン
- ジェーン
- ジェーン
- ジェーン
私は、これはそれがcouldnので、IEは、前のページからのデータをこすると関係していると思われるでしょうウェブサイトの読み込みを終了します。これを修正する方法はありません..
ありがとう!
はビジーではないだけをチェックしてくださいだけでなく、readyStateの(ページの読み込みが完了したとき、それは4でなければなりません) – NineBerry
ありがとう!それは今完璧に動作します! :) 私はReadyStateを認識していませんでした。私はビジーな仕事をしたという印象を受けました! – hisoka
値を設定する直前にvNameをクリアする必要があります。新しい値を取得できない場合には明らかになります –