获取标记之间的字符串(<div><p>在 p1</p>测试<p>p2</p></div> 中为 TEST)



代码:

from bs4 import BeautifulSoup
soup = BeautifulSoup('<div><p>p1</p>TEST<p>p2</p></div>')
print soup.div()

结果:

[<p>p1</p>, <p>p2</p>]

为什么字符串TEST不在结果集中?我怎样才能拿到它?

soup.div()soup.div.find_all()的快捷方式,它可以在div标签中找到所有标签,正如您所看到的,它可以完成任务。TESTp标签之间的文本,或者换句话说,是第一个p标签的tail

您可以通过获取第一个p标签并使用.next_sibling:来获取TEST字符串

>>> soup.div.p.next_sibling
u'TEST'

或者,通过获取div.contents:的第二个元素

>>> soup.div.contents[1]
u'TEST'

来自bs4

import BeautifulSoup
soup = BeautifulSoup('<div><p>p1</p>TEST<p>p2</p></div>')
print soup.div.text
u'p1TESTp2'

最新更新