【问题标题】:BeautifulSoup: find all tags with a certain attribute, not value [duplicate]BeautifulSoup:查找具有特定属性的所有标签,而不是值 [重复]
【发布时间】:2019-01-05 17:46:52
【问题描述】:

我想使用 BeautifulSoup 从网站下载文件。为了检索 URL,我需要访问带有 download 属性的 a 标记。我知道我可以通过将dict 传递给BeautifulSoup.findBeautifulSoup.find_all 来按属性过滤标签,但我不知道如何处理不包含值的属性。我该怎么做?

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    您的问题已经有了关于 SO 的答案。我只是想回答一个应该为空或模式的情况

    from bs4 import BeautifulSoup
    import re
    html="""
    <div>
    <p data="123"></p>
    <p data="567"></p>
    <p data=""></p>
    </div>
    """
    soup = BeautifulSoup(html,'lxml')
    # get all tags with that attribute
    p_list=soup.findAll("p", data=True)
    print(p_list)
    # get  all tags with attribute value either empty or a particular pattern
    p_list=soup.findAll("p", {"data":re.compile("^$|123")})
    print(p_list)
    

    输出

    [<p data="123"></p>, <p data="567"></p>, <p data=""></p>]
    [<p data="123"></p>, <p data=""></p>]
    

    【讨论】:

      猜你喜欢
      • 2011-04-16
      • 2018-04-29
      • 2013-01-04
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2010-10-17
      相关资源
      最近更新 更多