我正在尝试寻找 <a>
使用 Python 中的 BeautifulSoup 4 通过其所包含的文本在网页中进行标记。我使用真实的表达式,如下例所示:
>>> from bs4 import BeautifulSoup as BS
soup = BS('<a>lalala <del>10</del> lalala </a>')
soup1 = BS('<a>lalala 10 lalala </a>'
>>> soup.find_all('a', text=re.compile('lalala'))
[]
>>> soup1.find_all('a', text=re.compile('lalala'))
[<a>lalala 10 lalala </a>]
为什么嵌入<del></del>
标签使我无法找到 <a>
标签的文本包含它?我该如何解决它?
最佳答案
这与你的正则表达式无关,而是 .string
的方式。 (在 Beautiful Soup 4.4.0 中,text
参数称为 string
)参数的作用是,如果标签包含多个内容,则返回 None 。
您可以使用a function这样做:
def in_text(tag):
return tag.name == 'a' and 'lalala' in tag.text
soup.find_all(in_text)
其产量:
[<a>lalala <del>10</del> lalala </a>]
关于python - BeautifulSoup:查找带有嵌入标签的标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095285/