我正在使用 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/