代码几乎是我在网上进行一些研究后得到的。请随时进行编辑并提出任何建议。
我有以下两个问题:
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工作表中,然后再提取所需的数据,但是它太慢了,因为我知道,以这种方式,程序在没有大型文件的情况下却要执行大量的任务。的链接将被打开并一次又一次地复制。