我有以下情况
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
的标记)。
我想通过调用搜索到BeautifulSoup元素的.text
函数来做到这一点。以便在搜索前将所有子标记中的文本连接起来。有这样的功能吗?
span
文本搜索子Hey
,然后检索父文件,因为这在实际情况下也是相当通用的。没有方法搜索元素的.text
属性吗?
发布于 2018-12-31 06:00:36
您可以尝试使用下面的方法通过完整的文本内容span
找到"HeyJoe"
节点。
tag = [span for span in soup.findAll('span') if span.text == "HeyJoe"][0]
发布于 2018-12-31 05:57:00
从你的措辞来看,你想做什么根本不清楚。
如果您想要搜索特定的模式,可以使用re.compile
并将其直接传递给BeautifulSoup的text=
关键字参数。
soup.find("span", text=re.compile("Hey"))
这将返回页面上任何span标记中字符串“嘿嘿”的第一个实例(如果有的话)。如果您希望大小写不敏感,请使用:
soup.find("span", text=re.compile("Hey", re.IGNORECASE))
https://stackoverflow.com/questions/53987945
复制相似问题