【发布时间】:2019-10-04 07:08:08
【问题描述】:
我有这样的事情:
<b>foo:</b> bar
<br />
<b>baz:</b>
<font color="green">YES</font> spam
<br />
<b>eggs:</b> ham
<br />
现在我想获取<br>s 之间的所有这些字符串。
我可以这样做:
from bs4 import BeautifulSoup
# get the html here
soup = BeautifulSoup(content, 'html.parser')
for element in soup.find_all('b'):
print(element.next_sibling)
它有效,但仅适用于未封装的文本,即<font> 标签。所以我会得到bar 和ham,但我不会得到YES,而且出乎意料的是,我什至不会得到spam。有没有办法在不使用正则表达式的情况下解析它?
【问题讨论】:
-
BeautifulSoup4 有一个内置函数可以专门获取标签之间的文本。它被称为
get_text()。在此处查找更多信息:crummy.com/software/BeautifulSoup/bs4/doc/#get-text -
但这对我有什么帮助呢?看起来和
.text完全一样 -
不是重复的,我知道如何获取标签之间的文字,比如
<b>标签,但是这里的文字在<br>s之间
标签: python html python-3.x beautifulsoup