在一些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>]