VBA/Excel - 多个网站抓取 returns 重复
VBA/Excel - Multiple website scrape returns duplicates
我一直在从多个网站抓取数据,并从每个网站中提取 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
现在这可行了,但是,它会随机 returns 重复结果。尽管我确实在循环开头插入了 'DoEvents' ,但在提取信息之前似乎无法正确加载整个页面。例如,我应该从五个网站获取以下信息:
- Bob
- John
- Jane
- Joe
- Hank
相反,我得到了这样的东西(随机变化):
- Bob
- John
- John
- Joe
- Hank
并且 运行 宏将再次随机产生:
- Bob
- John
- Jane
- Jane
- Jane
我怀疑这与 IE 从上一页抓取数据有关,因为它无法完成网站加载。不知道如何解决这个问题..
谢谢!
不仅要检查 Busy,还要检查 ReadyState(页面加载完成时应为 4)
我一直在从多个网站抓取数据,并从每个网站中提取 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
现在这可行了,但是,它会随机 returns 重复结果。尽管我确实在循环开头插入了 'DoEvents' ,但在提取信息之前似乎无法正确加载整个页面。例如,我应该从五个网站获取以下信息:
- Bob
- John
- Jane
- Joe
- Hank
相反,我得到了这样的东西(随机变化):
- Bob
- John
- John
- Joe
- Hank
并且 运行 宏将再次随机产生:
- Bob
- John
- Jane
- Jane
- Jane
我怀疑这与 IE 从上一页抓取数据有关,因为它无法完成网站加载。不知道如何解决这个问题..
谢谢!
不仅要检查 Busy,还要检查 ReadyState(页面加载完成时应为 4)