以下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)?
答案 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
中。