Excel VBA 在 <a> 标签后提取 InnerText

Excel VBA extract InnerText after <a> tag

我正在尝试在标签后提取一些 InnerText。

这是HTML:

'<pre><a href="../">../</a>
<a href="view_10496.html">view_10496.html</a>     06-Feb-2021 01:54     60K
<a href="view_10498.html">view_10498.html</a>     06-Feb-2021 01:54     53K
<a href="view_10499.html">view_10499.html</a>     06-Feb-2021 01:54     26K
<a href="view_10500.html">view_10500.html</a>     06-Feb-2021 01:54     15K
<a href="view_10501.html">view_10501.html</a>     06-Feb-2021 01:54    128K

我的代码可以获取 a 标签的内容,但我还想提取 a 标签后面的文本。 计数器确保我丢弃第一个 a 标签。

Set alle_a_tags = ie.document.getElementsByTagName("a")

For Each a_tag In alle_a_tags
    
    If teller = 0 Then
        GoTo Volgende_a_tag
    End If

    InnerHTML = a_tag.InnerHTML
    InnerText = a_tag.InnerText
    Href = a_tag.Href
    Date = ...
Next

您可以使用正则表达式提取结束标记后面的文本。

示例:(?<=)(.|\r).*?$

正则表达式沙盒:https://regex101.com/

仅基于 HTML 提供的:

您可以将 href 属性值的子字符串与 starts with 运算符匹配以获得正确的前导节点。然后您需要移动到 NextSibling 以获得所需的文本。您可以使用 Select Case 来确定要访问哪个 属性,具体取决于该同级

的节点类型
Dim i As Long, nodes As Object, nextSibling As Object

Set nodes = ie.document.querySelectorAll("[href^='view_']")

For i = 0 To nodes.Length - 1
    Set nextSibling = nodes.Item(i).nextSibling
    'https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
    Select Case nextSibling.NodeType
    Case 1
        Debug.Print nextSibling.innerText
    Case 3
        Debug.Print nextSibling.NodeValue
    End Select
Next