正在获取错误:[运行时错误'-2147467259(80004005)':自动化错误未指定的错误]

时间:2019-07-08 12:42:34

标签: excel vba web-scraping dynamic-arrays getelementsbytagname

代码几乎是我在网上进行一些研究后得到的。请随时进行编辑并提出任何建议。 我有以下两个问题: 1.即使我没有使用IE.visible = True,也会打开Internet Explorer窗口。如果出现问题,可以请您帮忙。 2.其次,代码提示错误 `运行时错误'-2147467259(80004005)':

自动化错误

未指定的错误` 我可以做些什么避免它。

如果语法也不正确,请发表评论。

我曾考虑过使用XML元素,但是我需要的数据没有唯一的classname, id,并且我无法以网络抓取的XML方式使用`getElementsByTagName()(Number)'(如果有)可能的话,请向这个方向提出建议,因为我认为代码会变得更加清晰。

Sub prog()
  Dim ie As InternetExplorer
  Dim webpage As HTMLDocument
  Dim strr() As Variant
  Dim num As Integer
  num = 0
  i = 0
  Sheets.Add.Name = "New Sheet"
  Set ie = New InternetExplorer
  ie.navigate ("https://<link>")
  Do While ie.readyState = 4: DoEvents: Loop
    Set webpage = ie.Document
    table_data = webpage.getElementsByTagName("tbody")(0)
    mtlb1 = table_data.getElementsByTagName("tr")
    mtlb2 = table_data.getElementsByTagName("tr")
    For Each mtlb2 In table_data
      num = num + 1
    Next
    ReDim strr(0 To num, 2)
    For Each mtlb In table_data
      Newt = mtlb.getElementsByTagName("td")(1)
      strr(i, 1) = Newt.getElementsByTagName("a").innerText
      Newt = mtlb.getElementsByTagName("td")(3)
      strr(i, 2) = Newt.getElementsByTagName("a").innerText
      i = i + 1
    Next
    For i = 0 To num - 1
      Sheets("New Sheet").Range("A" + CStr(3 + i)).Value = strr(i, 1)
      Sheets("New Sheet").Range("B" + CStr(3 + i)).Value = strr(i, 2)
    Next
End Sub

我想从tbody标签的表中提取数据,仅从某些列中提取数据,特别是第二和第四列。 更进一步,我将使用链接列表来打开页面,并基于围绕2000-5000个链接的网页获得相同的数据。

实际上,我首先尝试将整个表复制到excel工作表中,然后再提取所需的数据,但是它太慢了,因为我知道,以这种方式,程序在没有大型文件的情况下却要执行大量的任务。的链接将被打开并一次又一次地复制。

0 个答案:

没有答案
相关问题