【发布时间】:2012-04-06 06:06:11
【问题描述】:
我正在尝试获取 Internet Explorer Web 浏览器窗口的文本内容。
我正在执行以下步骤:
- 获得指向 IHTMLDocument2 的指针
- 我从 IHTMLDocument2 获取正文作为 IHTMLElement
3. 在正文上我调用 get_innerText
编辑
- 我获取了 body 的所有子元素并尝试对所有 IHTMLElements 进行递归调用
- 如果我得到任何不可见的元素,或者如果我得到一个标签为脚本的元素,我会忽略该元素及其所有子元素。
我的问题是
- 除了页面上可见的文本之外,我还获得了具有 style="display: none" 的内容
- 对于 google.com,我还获得了 javascript 以及文本。
我尝试了递归方法,但我不知道如何处理这样的场景,
<div>
Hello World 1
<div style="display: none">Hello world 2</div>
</div>
在这种情况下,我将无法获得“Hello World 1”
谁能帮我找出从 IHTMLDocument2* 获取文本的最佳方法。 我使用的是 C++ Win32,没有 MFC,ATL。
谢谢, 阿什。
【问题讨论】:
-
您可能需要迭代(从最后一个到第一个)IHTMLDocument2 元素,并删除不需要的节点。
-
@kobik 我已经考虑过这种方法,但有时父元素可能包含可能未包含在任何 html 标记中的文本。举个例子。
<div>Hello World 1<div>Hello World 2</div></div>如果我遵循这种方法,我将无法获得 Hello World 1。
标签: c++ winapi html-parsing ole mshtml