如何用lxml提取p标签中的所有内容?

时间:2017-06-28 04:24:11

标签: python lxml

以下html片段中有三个xyz和两个<br>标记 我想解析它并提取p标签中的所有内容。

import lxml.html
strings = """<p> xyz <br> 
xyz <br> xyz  </p>"""
root=lxml.html.document_fromstring(strings)
texts = root.xpath('//p')
for i,content in enumerate(texts):
    print(i,"    ",content.text)

结果不是我想要的。

0       xyz 

如何用lxml提取p标签中的所有内容?
为什么我的代码不能用lxml提取p标签中的所有内容(三个xyz)?

2 个答案:

答案 0 :(得分:1)

我不知道lxml,但你可以使用bs4

from bs4 import BeautifulSoup
strings = """<p> xyz <br> 
xyz <br> xyz  </p>"""

soup = BeautifulSoup(strings, 'lxml')

for i, html in enumerate(soup.find_all('p')):
    print(i, html.text)

输出:

0  xyz
xyz  xyz

答案 1 :(得分:1)

使用content.text_content()代替content.text

我得到了这个输出:

0       xyz  
xyz  xyz

content.text仅为您提供xyz字符串,该字符串是<p>的直接子项。其他两个xyz:es存储在每个<br>元素的tail中。