Красивый суп найти элемент с несколькими классами

1
<div data-list="1" data-href="/a/ajaxPhones?id=46420863" class="action-link 
showPhonesLink">Показать телефон</div>

Как найти этот элемент в Beautiful Soup?

Я пробовал следующее, но это не сработало:

show = soup.find('div', {'class': 'action-link showPhonesLink'})

Как я могу получить этот элемент?

Теги:
beautifulsoup

2 ответа

1
Лучший ответ

Я предполагаю, что суп в шоу = soup.find() есть

source = requests.get(URL to get).text
soup = BeautifulSoup(source, 'lxml')

пытаться:

show = soup.find('div', class_='action-link showPhonesLink').text

.text не всегда работает, но я обнаружил, что результат не изменится без него.

я мог бы дать более подробный ответ, если бы вы могли предоставить более подробную информацию.

0

Используйте селектор:

show = soup.select_one('div.action-link.showPhonesLink')

Или сопоставить точный атрибут class:

show = soup.find('div', class_='action-link showPhonesLink')

# or (for older versions of BeautifulSoup)
show = soup.find('div', attr={'class': 'action-link showPhonesLink'})

Обратите внимание, что при втором методе важны порядок классов, а также пробел, поскольку он является точным соответствием атрибуту class. Если что-то изменится в атрибуте class (например, еще одно пространство между классами), оно не будет соответствовать.

Я бы предложил первый метод.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню