python - 如何从Python中的某些HTML节点仅获取可见文本

标签 python html html-parsing

如何从 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/

相关文章:

python - 检测/确认打开QInputDialog

python - BeautifulSoup 使用 POST 表单操作解析 html 时遇到问题

html - 垂直单元对齐

c# - HTML敏捷包: Issues getting content of anchor tag within a string

java - 使用 Jsoup.Jar 进行 HTML 解析

python - 处理 RNN/LSTM 中的缺失数据(时间序列)

Python更改用startfile打开的exe文件的工作目录

html - 将 HTML 放在正确的位置

java - 使用 selenium WebDriver 在网页中执行 javascript

python - 重定向到新的 URL 进行解析