Красивый суп найти элемент с несколькими классами - PullRequest
0 голосов
/ 15 октября 2018
<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'})

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

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

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

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 (например, еще один пробел между классами), оно не будет соответствовать .

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

0 голосов
/ 15 октября 2018

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

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

try:

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

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

Я мог бы дать более справочный ответ, если бы вы могли предоставить немного больше деталей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...