【发布时间】:2020-02-18 15:14:00
【问题描述】:
我有以下 HTML
我正在尝试获取突出显示的日期。
这是我的代码,但它不起作用。我明白了
“对象不支持此属性或方法”:
Set sammel = HTMLDoc.getElementsByClassName("date").innerText
这是完整的代码
Sub testalt()
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLInput2 As MSHTML.IHTMLElement
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLButtons As MSHTML.IHTMLElementCollection
Dim ie As InternetExplorerMedium
Dim buttonsubmit As HTMLButtonElement
Dim sammel As String
Set ie = New InternetExplorerMedium
ie.Visible = True
ie.navigate "https://plm.corp.int/&showInitialResults=true&cancelLabel=Close&minRequiredChars=3&genericDelete=true&selection=multiple&txtTextSearch=e2711846&filters={%27txtTextSearch%27:[%27Equals|e2711846%27]}
Do While ie.readyState <> READYSTATE_COMPLETE
Loop
'Seite öffnen und Wert in Suche geben
Set HTMLDoc = ie.document
Set HTMLInput = HTMLDoc.getElementById("txtTextSearch")
Set HTMLInput2 = HTMLDoc.getElementById("mx_btn-search")
HTMLInput.Value = "e2711846"
HTMLInput.FireEvent ("onkeyup")
HTMLInput2.Click
''Nach neuester Version suchen
sammel = HTMLDoc.getElementsByClassName("date")(0).innerText
End Sub
sammel 仍然是空的。我的页面不刷新或其他什么问题?因为我打开一个搜索窗口,然后输入搜索词并搜索它。但 URL 在新打开的窗口中保持不变。我认为这是一个 javascript 的东西
【问题讨论】:
-
检查
Debug.Print HTMLDoc.getElementsByClassName("date").Length,如果它为零,这意味着没有找到名为date的class。为什么你使用InternetExplorerMedium而不是InternetExplorer?检查这是否也有效。 -
关于 InternetexplorerMedium。如果我不使用它,我会得到运行时错误 462。Debugprint 给我“0”
-
零表示
getElementsByClassName("date")没有找到任何东西。由于您的 URL 不公开,因此我们只能说,我们无法重现您的问题。因此,您可能需要进行更多调查以提供更多详细信息或自行查找问题。 -
会不会是当你做
HTMLInput2.Click时,浏览器会加载一个新的网页?诸如搜索结果或有关产品的信息等。如果为 true,则意味着源代码已更改,并且您的变量HTMLDoc仍链接到 first 网页。所以你需要重复这个过程(链接到新加载的网页,并在源代码中获取元素) -
尝试在
HTMLInput2.Click之后等待,直到ie.readyState是READYSTATE_COMPLETE,使用你在开始时所做的循环。也许它需要一些时间来加载一些东西,而 HTML 代码还没有准备好。
标签: html excel vba web-scraping