【发布时间】:2021-07-17 03:44:06
【问题描述】:
sn-p总结:(第一个li-tag打开显示内容,其他li-tag相同,只是dd-tag中的值不同。
<body id=“WEBSITE“>
<div> id="layout" class=" MAIN SECTION "</div>
<main>
<ul id=“RESULTS“>
<li class="content" style="position:relative;">
<dl>
<dt class="first">HEAD01:</dt>
<dd>VALUE01</dd>
<dt class="first"> HEAD02:</dt>
<dd> VALUE02</dd>
<dt class="first"> HEAD03:</dt>
<dd> VALUE03</dd>
<dt class="first"> HEAD04:</dt>
<dd> VALUE04</dd>
</dl>
</li>
<li class="content" style="position:relative;">… </li>
<li class="content" style="position:relative;">… </li>
<li class="content" style="position:relative;">… </li>
<li class="content" style="position:relative;">… </li>
</ul>
</main>
</body>
li-tags 包含一个对象的不同属性,每个对象具有相同的标题 HEAD01、02、03 和 04(在“dt”下),每个 li-tag 中的 VALUE 不同(在“ dd”)。我没有成功提取标签中的 VALUE,使得它们在 Excel 中列为相应标题下的列值,即 Excel 表中 HEAD01 下所有 li.dd-tags 中的 Value01。
我的代码:
Public Sub GetData()
Const url = "URL"
Dim html As New HTMLDocument, Htmldoc As New HTMLDocument
Dim RecsCnt As Object, x As Long
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", url, False
.send
html.body.innerHTML = .responseText
End With
Set RecsCnt = html.querySelectorAll("li")
'Set RecsCnt = html.querySelectorAll("dl")
With ActiveSheet
For x = 0 To RecsCnt.Length - 1
.Cells(x + 2, 2) = html.querySelectorAll("dd").Item(0).innerText
Next
End With
End Sub
有没有人有一个有效的想法?谢了
【问题讨论】:
标签: html excel vba web-scraping queryselector