Парсинг сайта при помощи bs4
Как мне задать ключ для парсинга в find, чтобы получить какие-либо данные?
У меня имеется такой html:
<a data-toggle="popover7067" id="bx_3966226736_7067_secondpict" href="/remen-bezopasnosti-2-go-ryada-sideniy-lev-prav-blk-tesla-model-3-1081281-01-f/" title="1 Ремень безопасности 2-го ряда сидений лев. прав. (BLK) Tesla model 3 1081281-01-F">
<!-- <div id="img7067"> -->
<div class="lazy b_red1" data-bg="url(/upload/resize_cache/iblock/f5d/250_250_1/f5d1f9f364cc3b5265d8b8c93751c7fe.jpeg)" style="background-repeat: no-repeat; background-size: contain; height: 250px; width: auto; margin-bottom: 20px; margin-top: 10px; background-image: url("/upload/resize_cache/iblock/f5d/250_250_1/f5d1f9f364cc3b5265d8b8c93751c7fe.jpeg");" data-was-processed="true">
</div> <!-- </div> -->
</a>
Мне необходимо задать в find ключ data-toggle со значением popover7067, чтобы получить информацию. Я знаю, что я мог бы указать просто тег а и получить всё что угодно, но для меня важно разобраться как работать с таким ключом как data-toggle, потому что нередко при парсинге разных сайтов появляются ключи с рисочкой, буду благодарен за ответ.
Ответы (1 шт):
Решение довольно просто, вам просто нужно больше по гуглить, и научится читать документации.
Здесь в качестве фильтра используем словарь в котором указываем атрибуте тега в качестве ключа, а его значение в качестве значения атрибута. Шаблон выглядеть будет так.
element = soup.find("tag", {"key" : "value"})
Ну а в вашем примере, выглядеть будет так
element = soup.find("a", {"data-toggle" : "popover7067"})
Такой же стиль можно использовать когда вам нужно найти все элементы
elements = soup.find_all("a", {"data-toggle" : "popover7067"})