【发布时间】:2020-04-24 11:28:52
【问题描述】:
QHarr 为另一个问题编写的这段代码正在运行,但在我的 Html 正文代码中,我有常规选项卡和移动选项卡。
此代码在“常规选项卡内容”和“移动选项卡内容”中提取 URL 的 href 代码。我只想提取常规标签内容的 href url。 HTML树形结构中有两个相互关联的节点。
<!-- regular tabs content -->
<div class="Right_Side" id="Work">
<button class="btn-success primary btn" data-bind="visible: !$root.providerShouldAcceptDecline() && !isOutsourced(), click : add">Consolidate</button>
<div class="download">
<a class="btn-default" href="#" data-bind="click : download, visible: $root.ViewModel.data().length > 0">
</a>
</div>
<div class="link">
<a class="action" href="#" data-bind="click: $root.ViewModel.showDelete"></a>
<a title="Before.jpg"class="app-action" style="padding-left: 0px;" href="example.com/Documents/Id=FileName=Check.jpg" target="_blank" data-bind="text:fileName">Check</a>
<span class="data">
<span data-bind="text:uploadDate">Second Month </span>
</span>
</div>
<div class="link">
<a class="action" href="#" data-bind="click: $root.ViewModel.showDelete"></a>
<a title="Before.jpg" class="app-action" style="padding-left: 0px;" href="example.com/Documents/Id=FileName=Check.jpg" target="_blank" data-bind="text:fileName">Check</a>
<span class="data">
<span data-bind="text:uploadDate">Second Month </span>
</span>
</div>
</div>
With IE
.Visible = True
.navigate "Example.com"
While .Busy Or .readyState < 4: DoEvents: Wend
Dim aNodeList As Object, i As Long
Set aNodeList = IE.document.querySelectorAll(".app-action[href]")
For i = 0 To aNodeList.Length - 1
ActiveSheet.Cells(i + 2, 4) = aNodeList.item(i)
Next
'Quit '<== Remember to quit application
End With
【问题讨论】:
-
只有一个结果还是总是两个中的第一个?以及相关节点中的两个 a 标签中的哪一个?
-
会有多个结果,需要拉取所有的“example.com/Documents/… href="example.com/Documents/… href="example.com/Documents/… href="example.com/Documents/…)
-
您确定您的 html 是准确复制粘贴的吗?
-
本能告诉我可能有问题。我看到的最好的是带有 HTML 的 querySelectorAll("#Work [title]"),如图所示。如果我理解正确,这会带回一个节点太多。最后一个节点需要被忽略,因此您将循环到 .Length -2。但是,对于其他用例,我不知道这是否成立。感觉不是特别健壮。
-
For i = 0 To (ie.document.querySelectorAll("#Work [title]").Length- 2 ) /2 假设长度为偶数。 ?
标签: vba web-scraping