我正在寻找一个 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 来检索可见文本,有更好的主意吗?