我一直在从多个网站上抓取数据,并从每个网站中提取特定标签的内部文本。代码如下:
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',但在提取信息之前似乎没有正确加载整个页面。例如,我应该从五个网站获取以下信息:
- 鲍勃
- John
- 简
- 乔
- 汉克
醇>
相反,我得到这样的东西(随机变化):
- 鲍勃
- 约翰
- 约翰
- 乔
- 汉克
醇>
再次运行宏会随机产生:
- 鲍勃
- 约翰
- 简
- 简
- 简
醇>
我怀疑这与IE从上一页抓取数据有关,因为它无法完成加载网站。不知道如何解决这个问题..
谢谢!
答案 0 :(得分:1)
不仅要检查Busy还要检查ReadyState(页面加载完成时应该是4)