我正在寻找一种能够识别css并且与浏览器呈现html相同的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
则返回“a c d e”。这正是我需要的。但是,如果我使用html解析器并剥离html标签,它将返回“abcdef”。我需要一个解析器,它会自动忽略“b”和“f”读取它们的css属性。
知道哪个解析器支持这个吗?我尝试过美丽的肥皂,
hiddenelements = sarim.findAll(True, {'style' : 'display:none'})
for p in hiddenelements:
p.extract()
现在sarim.text
返回文本,但这仅适用于内联样式,这是基于css类的样式失败的手动过程,并且因为类将是随机的,我正在寻找一个智能解析器将自动执行此操作。
我有一个故障安全的想法来运行无头wekbit(phantomjs.org)并使用element.innerText来检索可见文本,还有更好的主意吗?
答案 0 :(得分:1)
如何Python-Webkit这是webkit的Python绑定。
Python Webkit DOM项目使得python成为javascript的完全对等 它涉及访问和操作可用的完整功能 Webkit,例如HTML5。一切可以用javascript完成, 例如getElementsbyTagName和appendChild,事件回调通过 onclick,通过window.setTimeout超时回调,甚至是AJAX 使用XMLHttpRequest,也可以从python中完成。
答案 1 :(得分:0)
我在https://github.com/JamieMason/Asterisk使用PhantomJS创建了一个支持CSS的HTML缩小器 - 为了您的目的,可以很容易地对它进行分叉和修改。
主要工作是使用https://github.com/JamieMason/Asterisk/blob/master/src/browser.js完成的,对于我的用例,我检查样式以生成HTML输出 - 但你可以改为返回innerText。