python - 使用 lxml 解析 HTML - 如何在结果列表中保留空内容?

标签 python html parsing lxml lxml.html

我正在使用 lxml 解析 html 文件:

from lxml import html

tree = html.parse(myfile)
data = tree.xpath('//p/text()')

我有 300 <p>text</p>我的 html 文件中的标签,但是 len(data)只有 250 因为有时我会有 <p></p>在我的html中。我希望这些包含在 data 中要么作为 'nan''' .

关于如何做到这一点有什么建议吗?

最佳答案

//p/text() 只会找到具有非空文本的 p 元素的文本。

相反,查找所有 p 元素并为每个元素调用 .text_content():

data = [p.text_content() for p in tree.xpath('//p')]

为了演示差异:

>>> from lxml import html
>>> 
>>> 
>>> data = """
... <p>text1</p>
... <p></p>
... <p>text2</p>
... """
>>> 
>>> tree = html.fromstring(data)
>>> data = tree.xpath('//p/text()')
>>> len(data)
2
>>> 
>>> data = [p.text_content() for p in tree.xpath('//p')]
>>> len(data)
3

关于python - 使用 lxml 解析 HTML - 如何在结果列表中保留空内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229113/

相关文章:

android - Bootstrap3 form-horizo​​ntal 在大屏幕上呈现良好,但在移动设备上效果不佳

javascript - 替换隐藏输入中选择的值

parsing - 如何遍历解析树以检查ANTLR中的语法错误

c# - 如何解析作为字符串从文本框传递的 Xml 值

ios - SwiftyStoreKit解析收据

python - 使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图

python:如何在没有括号的情况下返回值?

python - 根据bp坐标提取fasta序列的一部分

python - pip install mysql-python 失败并出现环境错误 : mysql_config not found

html - 打印时为每页添加边框,没有任何边框中断