2016-06-16 2 views
0

Я хочу использовать soup.find_all, чтобы найти все теги HTML, которые имеют атрибуты id или name.Выберите теги HTML, которые имеют один или несколько конкретных атрибутов с помощью bs4

Следующий код работает для атрибута ID:

for tag in soup.find_all(attrs={"id": True}): 

Однако следующий код с двумя атрибутами нет:

for tag in soup.find_all(attrs={"id":True, "name":True}): 

Можно ли сделать логический поиск с BS4, что найдут все теги, которые имеют один из двух конкретных атрибутов (или оба атрибута), или мне придется искать каждый атрибут отдельно?

ответ

1
soup.find_all(lambda element: 'name' in element.attrs or 'id' in element.attrs) 

Мы используем lambda для доступа к элементу внутри find_all. И затем мы используем оператор in, чтобы проверить, есть ли element.attrs (это словарь) имеет ключ nameилиid.

+0

Спасибо! Ваше решение отлично поработало! –

Смежные вопросы