选择带有美丽汤中一些指定文本的标签



在一些html页面上,我有一堆标签,看起来像:

<a class="country" href="www.google.com" title="Germany">09:18, 9 July 2021</a>

在 BeautifulSoup 中,我只需要为年份为 2019 年的德国选择那些标签(因此,例如,示例标签不适合这里,因为它有 2021 年)。

最好的方法是什么?我只是从头开始学习BS,到目前为止我只能这样做:

germany = germany_soup.find_all(attrs={"title": "Germany"})

然后检查germany中的每个标签,其text属性是否包含2019

我的问题:这是解决这个问题的传统方法吗,有没有办法以某种方式在find_all中指定'2019'以避免"手动"检查每个标签.text是否在循环中都有"2019"?

您可以使用re模块在所有标签中查找特定文本以提取合适的输出

html="""<a class="country" href="www.google.com" title="Germany">09:18, 9 July 2021</a>
<a class="country" href="www.google.com" title="Germany">09:18, 9 July 2019</a>
<a class="country" href="www.google.com" title="Germany">07:11, 9 July 2019</a>
<a class="country" href="www.google.com" title="Germany">09:18, 9 July 2010</a>
"""

import re
soup=BeautifulSoup(html,"html.parser")
soup.find_all("a",attrs={"title": "Germany"},text=re.compile("2019"))

输出:

[<a class="country" href="www.google.com" title="Germany">09:18, 9 July 2019</a>,
<a class="country" href="www.google.com" title="Germany">07:11, 9 July 2019</a>]

相关内容

  • 没有找到相关文章

最新更新