2

我正在寻找一个 HTML 解析器,它支持 css 并且工作方式与浏览器呈现 html 的方式相同。我实际上正在寻找 element.innerText (DOM-JS) 的等价物。让我举个例子。考虑以下html,

<style>
.AAA { display:inline;}
.BBB { display:none;}
.CCC { display:inline ;}
</style>
<span id="sarim">

    <span class="AAA">a</span>
    <span style="display:none">b</span>
    c
    <span class="CCC">d</span>
    <div style="display:inline">e</div>
    <span class="BBB">f</span>

</span>

现在如果我在浏览器中运行上面的 html 并运行document.getElementById('sarim').innerText返回“acd e”。这正是我需要的。但是,如果我使用 html 解析器并剥离 html 标签,它将返回“abcdef”。我需要一个解析器,它会自动忽略读取它们的 css 属性的“b”和“f”。

知道哪个解析器支持这个吗?我试过美丽的肥皂,

hiddenelements = sarim.findAll(True, {'style' : 'display:none'})
for p in hiddenelements:
    p.extract()

现在sarim.text返回文本,但这仅适用于内联样式,这是手动过程,对于基于 css 类的样式失败,并且由于类将是随机的,我正在寻找一个可以自动执行此操作的智能解析器。

我有一个安全的想法来运行一个无头 wekbit (phantomjs.org) 并使用 element.innerText 来检索可见文本,有更好的主意吗?

4

2 回答 2

1

Python-Webkit怎么样?它是 webkit 的 Python 绑定。

在访问和操作 Webkit 可用的全部功能(例如 HTML5)时,Python Webkit DOM 项目使 python 成为 javascript 的完全对等体。所有可以用 javascript 完成的事情,例如 getElementsbyTagName 和 appendChild,通过 onclick 的事件回调,通过 window.setTimeout 的超时回调,甚至使用 XMLHttpRequest 的 AJAX,也可以从 python 完成。

于 2012-07-25T11:12:14.823 回答
0

我在https://github.com/JamieMason/Asterisk使用 PhantomJS 制作了一个 CSS 感知 HTML minifier - 它很容易为您的目的分叉和修改它。

主要工作是使用https://github.com/JamieMason/Asterisk/blob/master/src/browser.js完成的,对于我的用例,我检查样式以生成 HTML 输出 - 但您可以返回 innerText 。

于 2012-11-27T13:15:40.720 回答