【问题标题】:VBA to Capture text between TagsVBA 捕获标签之间的文本
【发布时间】:2013-01-10 16:12:19
【问题描述】:

我正在尝试在 Excel 中使用 VBA 从网站中提取数据。 页面源有以下内容(如下),我可以提取“A”标签之间的文本“这是我的文本”,我可以提取“DIV”标签之间的所有内容,显示为“这是我的文本(XXXXX)”......但我无法提取刚刚出现在“/A”之后的文本块......例如“(XXXXX)”

 <div style="padding: 1px;"><a href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('MainPage'),{'j_id32'},'');}return false">This is my text</a> (XXXXX)</div>

<div style="padding: 1px; padding-left:20px;"><a href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.getElementById('MainPage'),{'j_id32'},'');}return false">This is my text</a> (XXXXXXXX)</DIV>

有什么想法吗??

【问题讨论】:

  • 你可能想查看这个SO post,一旦你确定了感兴趣的DOM对象,读出它的innerHTML属性。
  • innerHTML 属性似乎只是返回了整个 HTML 字符串(如我原来的问题中所示),这比 innertext 属性返回的要多得多。我需要做的是返回部分内部文本字符串,该部分出现在 A-TAGS 之外但在 DIV-TAGS 内部。
  • 如果你知道你想要的字符串是你的 DIV 元素中最后一个标签之后的那个,使用= Right(OBJ.innerHTML, Len(OBJ.innerHTML) - InStrRev(OBJ.innerHTML, "&gt;")) OBJ 是你的 DIV 元素
  • 谢谢@MikeD。这很有魅力。没想到用那个!!
  • 很高兴...然后我会将其转换为真正的答案...

标签: javascript dom excel web-scraping vba


【解决方案1】:

如果你知道你想要的字符串是在你的 DIV 元素中关闭的最后一个标签之后的那个,使用

TXT = Right(OBJ.innerHTML, Len(OBJ.innerHTML) - InStrRev(OBJ.innerHTML, ">"))

OBJ 是你的 DIV 元素

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多