我有以下情况
from bs4 import BeautifulSoup
html = '''<span class='generic'><span>Hey</span><span>Joe</span></span>'''
soup = BeautifulSoup(html, 'lxml')
tag = soup.find('span', text="HeyJoe")
print(tag)
打印None
。
但是如果我跑步
soup.find('span', text="Hey").parent.text
它返回HeyJoe
,因此它返回包括子文本在内的“全文”文本。我相信text=
函数的find()
参数也可以搜索“全文”,即.text
标签。
我必须找到父span
标签(具有类generic
的标签)。
我想通过调用搜索.text
元素的BeautifulSoup函数来做到这一点。以便在搜索之前将所有子标签中的文本连接起来。有这样的功能吗?
span
文本搜索子项Hey
,然后检索父项,因为在实际情况下这也是很通用的。是否无法搜索元素的.text
属性?
答案 0 :(得分:1)
您可以尝试使用以下内容通过完整的文本内容span
查找"HeyJoe"
节点:
tag = [span for span in soup.findAll('span') if span.text == "HeyJoe"][0]
答案 1 :(得分:0)
从您的措辞来看,您不清楚要做什么。
如果您要搜索特定模式,则可以使用re.compile
并将其直接传递给BeautifulSoup的text=
关键字参数,例如
soup.find("span", text=re.compile("Hey"))
这将返回页面上任何span标记(如果有)中字符串“ Hey”的第一个实例。如果您希望不区分大小写,请使用:
soup.find("span", text=re.compile("Hey", re.IGNORECASE))