VBA / Excel - 多个网站抓取返回重复

时间:2017-02-27 02:38:32

标签: excel vba excel-vba web-scraping webbrowser-control

我一直在从多个网站上抓取数据,并从每个网站中提取特定标签的内部文本。代码如下:

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',但在提取信息之前似乎没有正确加载整个页面。例如,我应该从五个网站获取以下信息:

  
      
  1. 鲍勃
  2.   
  3. John
  4.   
  5.   
  6.   
  7. 汉克
  8.   

相反,我得到这样的东西(随机变化):

  
      
  1. 鲍勃
  2.   
  3. 约翰
  4.   
  5. 约翰
  6.   
  7.   
  8. 汉克
  9.   

再次运行宏会随机产生:

  
      
  1. 鲍勃
  2.   
  3. 约翰
  4.   
  5.   
  6.   
  7.   

我怀疑这与IE从上一页抓取数据有关,因为它无法完成加载网站。不知道如何解决这个问题..

谢谢!

1 个答案:

答案 0 :(得分:1)

不仅要检查Busy还要检查ReadyState(页面加载完成时应该是4)