HTML 使用 lxml 解析 - 如何在结果列表中保留空内容?
HTML parsing with lxml - how to keep empty content in resulting list?
我正在使用 lxml 解析 html 文件:
from lxml import html
tree = html.parse(myfile)
data = tree.xpath('//p/text()')
我的 html 文件中有 300 个 <p>text</p>
标签,但 len(data)
只有 250 个,因为有时我的 html 中会有 <p></p>
.我希望这些作为 'nan'
或 ''
.
包含在 data
中
关于如何做到这一点有什么建议吗?
//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
我正在使用 lxml 解析 html 文件:
from lxml import html
tree = html.parse(myfile)
data = tree.xpath('//p/text()')
我的 html 文件中有 300 个 <p>text</p>
标签,但 len(data)
只有 250 个,因为有时我的 html 中会有 <p></p>
.我希望这些作为 'nan'
或 ''
.
data
中
关于如何做到这一点有什么建议吗?
//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