如何对包含破折号的属性使用SoupStrainer?

2024-10-03 11:15:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

但这会导致错误

Can't assign to function call

抱怨“data id”属性。如果我把“dataid”改为“id”,那么一切都会运行,但是我得不到想要的结果。你知道吗


Tags: django文档id元素data属性my错误
1条回答
网友
1楼 · 发布于 2024-10-03 11:15:26

你可以像这样通过

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>

相关问题 更多 >