Как использовать SoupStrainer для атрибутов, которые содержат тире? - PullRequest
0 голосов
/ 23 февраля 2019

Я использую Django и Python 3.7.Я хочу использовать BeautifulSoup и SoupStrainer для поиска определенных элементов с атрибутами в моем документе.Но как мне это сделать, если атрибут содержит тире?Я хотел бы сделать это

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

, но это приводит к ошибке

Can't assign to function call

с жалобой на атрибут "data-id".Если я изменю «data-id» на «id», то все запускается, но тогда я не получаю желаемых результатов.

1 Ответ

0 голосов
/ 23 февраля 2019

Вы можете передать его как

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

data-*, а другие подобные атрибуты должны быть переданы так, как указано в документации .

Пример

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...