我正在使用Django和Python 3.7。我想使用BeautifulSoup和SoupStrainer在文档中查找带有属性的特定元素。但是,如果属性包含破折号,该怎么办?我想这样做
my_strainer = SoupStrainer('a', data-id="aaa")
但这会导致错误
Can't assign to function call
抱怨“ data-id”属性。如果我将“ data-id”更改为“ id”,那么一切都会运行,但是我没有得到想要的结果。
答案 0 :(得分:2)
您可以像
一样传递它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>