Получение определенного тега div с супом Beautful
Обычно я бы просто назвал div именем класса, но это не уникально. Единственная уникальная вещь, которую имеет тег div - это слово "data-sc-replace" сразу после div. Это сокращенный пример исходного кода
<div data-sc-replace data-sc-slot="1234" class = "inlineblock" data-sc-params="{'magnet': 'magnet:?......'extension': 'epub', 'stream': '' }"></div>
Как бы я назвал слово data-sc-replace, если оно не привязано к классу или идентификатору?
Это код у меня
import requests
from bs4 import BeautifulSoup
url_to_scrape = "http://example.com"
r = requests.get(url_to_scrape)
soup = BeautifulSoup(r.text, "html5lib")
list = soup.findAll('div', {'class':'inlineblock'})
print(list)
# list = soup.findAll("div", "data-sc-params")
# list = soup.find('data-sc-replace')
# list = soup.find('data-sc-params')
# list = soup.find('div', {'class':'inlineblock'}, 'data-sc-params')
2 ответа
Решение
Используйте селекторы запросов CSS. Находит все divs
с data-sc-replace
атрибутов.
result = soup.select('div[data-sc-replace]')
Этот отличительный знак представляется атрибутом HTML без значения. Так что попробуйте это:
soup.find('div', attrs = {'data-sc-replace': ''})
# or use find_all() to get all such div containers