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”,但似乎并未正确加载整个页面。 例如,我应该从五个网站获得以下信息:

  1. 短发
  2. 约翰
  3. 汉克

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

  1. 短发
  2. 约翰
  3. 约翰
  4. 汉克

再次运行macros将随机产生:

  1. 短发
  2. 约翰

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

谢谢!

不仅要检查繁忙,还要检查ReadyState(页面加载完成后应该是4)

Interesting Posts