VBA:从HTMLTable中抓取确切的元素

问题描述 投票:1回答:2

请问你能帮我理解如何在qazxsw poi找到带有班级名称qazxsw poi的标签qazxsw poi吗?

我收到a,我不知道如何解决这个问题。

Table
html vba web-scraping
2个回答
0
投票

我会使用css选择器作为通常更快的选择器方法,并减少循环,从而降低复杂性。循环单个nodeList。

bptable

Object does not support this method前面的Sub ListVideosOnPage(VidCatName As String, VidCatURL As String) Dim XMLReq As New MSXML2.XMLHTTP60 Dim HTMLDoc As New MSHTML.HTMLDocument Dim VidRow As MSHTML.IHTMLElement Dim VidInnerRow As MSHTML.IHTMLElement Dim VidRows As MSHTML.IHTMLElementCollection Dim VidInnerRows As MSHTML.IHTMLElementCollection Dim VidInnerCatID As Integer XMLReq.Open "GET", VidCatURL, False XMLReq.send If XMLReq.Status <> 200 Then MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.statusText Exit Sub End If HTMLDoc.body.innerHTML = XMLReq.responseText Set XMLReq = Nothing Set VidRows = HTMLDoc.getElementsByClassName("bptable") Set VidInnerRows = ***VidRows***.getElementsByTagName("a") With VidRows For VidInnerCatID = 2 To VidInnerRows.Length Set VidInnerRow = VidInnerRows(VidInnerCatID) 'Debug.Print Next VidInnerCatID End With End Sub Dim nodeList As Object, i As long Set nodeList = HTMLDoc.querySelectorAll(".bptable a") For i = 0 To nodeList.Length - 1 Debug.Print nodeList.item(i).innerText Next ;后面的空间是.,最后的bptableclass selector。它说选择父母有类descendant combinatora标签元素。

我正在打印到即时窗口Ctrl + G.


0
投票

您可以使用type selector或尝试使用a获取单个元素,以便在其上应用bptable,而不是在元素集合上使用.getElementsByTagName("a")。我会选择VidRows(0)来达到目的。以下是获取内容的一种方式。

for loop
© www.soinside.com 2019 - 2024. All rights reserved.