如何从 Python 中的某个 HTML 节点获取仅可见文本?
假设我有一个这样的节点:
<span>
<style>.vAnH{display:none}.vsP6{display:inline}</style>
<span class="vAnH">34</span>
<span />
<span style="display: inline">111</span>
<span style="display:none">120</span>
<span class="vAnH">120</span>
<div style="display:none">120</div>
<span class="78">.</span>
<span class="vAnH">100</span>
<div style="display:none">100</div>
161
<span style="display: inline">.</span>
<span class="174">126</span>
<span class="vAnH">159</span>
<div style="display:none">159</div>
<span />
<span class="vsP6">.</span>
<span style="display:none">5</span>
<span class="vAnH">5</span>
<div style="display:none">5</div>
<span style="display:none">73</span>
<span class="vAnH">73</span>
<div style="display:none">73</div>
<span class="221">98</span>
<span style="display:none">194</span>
<div style="display:none">194</div>
</span>
有没有第三方库可以做到这一点,或者我应该手动解析它?
最佳答案
有多种方法可以使节点在浏览器中对最终用户可见/隐藏。 BeautifulSoup
是一个 HTML 解析器,它不知道元素是否会显示。不过,这里有一个尝试:
例如,如果某个元素被 CSS 规则隐藏,它就不起作用,但可能适合您的用例。
最简单的选择是切换到 selenium
。 .text
这里仅返回元素的可见文本:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://domain.com')
element = driver.find_element_by_id('id_of_an_element')
print(element.text)
关于python - 如何从Python中的某些HTML节点仅获取可见文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658863/