【问题标题】:How do I use a SoupStrainer for attributes that contain dashes?如何将 SoupStrainer 用于包含破折号的属性?
【发布时间】:2019-02-22 22:26:26
【问题描述】:

我正在使用 Django 和 Python 3.7。我想使用 BeautifulSoup 和 SoupStrainer 在我的文档中查找具有属性的特定元素。但是,如果属性包含破折号,我该怎么做?我想做这个

my_strainer = SoupStrainer('a', data-id="aaa")

但这会导致错误

Can't assign to function call

抱怨“data-id”属性。如果我将“data-id”更改为“id”,那么一切都会运行,但是我没有得到我想要的结果。

【问题讨论】:

    标签: python django python-3.x parsing beautifulsoup


    【解决方案1】:

    你可以像这样传递它

    my_strainer= SoupStrainer('a',{'data-id':'aaa'})
    

    data-* 和其他此类属性应该像documentation 中提到的那样传递。

    样本

    html="""
    <html class="test">
    <a data-id='aaa'>yes</a>
    <a>No</a>
    <span>no</span>
    </html>
    """
    from bs4 import BeautifulSoup
    from bs4 import SoupStrainer
    my_strainer= SoupStrainer('a',{'data-id':'aaa'})
    soup=BeautifulSoup(html, "lxml", parse_only=my_strainer)
    print(soup)
    

    输出

    <a data-id="aaa">yes</a>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-15
      • 2012-08-31
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多