【发布时间】:2018-09-29 13:51:10
【问题描述】:
我只是试图通过一个 url 链接列表运行,但它一直显示运行时错误'91',对象变量或未设置块变量。
我要提取的数据来自 iframe。它确实显示了一些值,但它卡在进程中间并出现错误。
下面是我要从中提取值的示例 url 链接:http://www.bursamalaysia.com/market/listed-companies/company-announcements/5927201
Public Sub GetInfo()
Dim IE As New InternetExplorer As Object
With IE
.Visible = False
For u = 2 To 100
.navigate Cells(u, 1).Value
While .Busy Or .readyState < 4: DoEvents: Wend
With .document.getElementById("bm_ann_detail_iframe").contentDocument
ThisWorkbook.Worksheets("Sheet1").Cells(u, 3) = .getElementById("main").innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 4) = .getElementsByClassName("company_name")(0).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 5) = .getElementsByClassName("formContentData")(0).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 6) = .getElementsByClassName("formContentData")(5).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 7) = .getElementsByClassName("formContentData")(7).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 8) = .getElementsByClassName("formContentData")(8).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 9) = .getElementsByClassName("formContentData")(9).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 10) = .getElementsByClassName("formContentData")(10).innerText
ThisWorkbook.Worksheets("Sheet1").Cells(u, 11) = .getElementsByClassName("formContentData")(11).innerText
End With
Next u
End With
End Sub
【问题讨论】:
-
错误发生在哪一行,是否有特定的 URL 失败?你能提供其中一些网址吗?
-
此行不正确:将 IE 作为新的 InternetExplorer 作为对象进行调暗 它应该是 IE 作为新的 InternetExplorer 调暗或 IE 作为对象调暗。由于您不使用 Set 语句来实例化对象,我猜您正在使用早期绑定版本自动实例化,即 Dim IE As New InternetExplorer
-
您的错误是因为该类通过 iframe 的最后一个索引是 9,即 ThisWorkbook.Worksheets("Sheet1").cells(u, 9) = .getElementsByClassName("formContentData")(9) .innerText 。 10 和 11 无效。
-
请从页面中获取您想要的确切值是多少?提供一些示例 URL(工作和失败)将有助于指示每个 URL 的 iframe 中是否有相同数量的具有该类的元素。如果都失败了,那么它可能只是错误的索引。
-
您好 QHarr,感谢您的回复。首先,我试图从网页中提取所有链接并过滤掉我需要的所有特定链接。使用我过滤掉的 url 链接,我想从 iframe 中提取一些特定数据。上面的代码是指我从 iframe 中提取数据的第二步。但是现在我在第一步中遇到了一些错误。在解决这些问题之前,我会打开另一个新线程。非常感谢您的回复。谢谢
标签: html excel vba web-scraping