Передача аргумента в метод soup.find()
Использую bs4, Python, пытаюсь спарсить из интернет магазина определенные данные, но есть проблема: надо передать в функцию find()
аргумент, который должен содержать в названии "-", но синтаксис Python этого не позволяет. Что можно сделать, чтобы не было ошибки синтаксиса?
код:
import requests
from bs4 import BeautifulSoup
url = 'https://www.eldorado.ru/c/kvadrokoptery/'
h = {'user-agent': 'my-app/0.0.3'}
response = requests.get(url, headers=h)
soup = BeautifulSoup(response.text, 'lxml')
data = soup.find('div', dataindex='003468') # надо data-index
Ответы (2 шт):
Автор решения: Andrew Hobbit
→ Ссылка
data = soup.find('div', attrs={'data-index': '003468'})
Универсальный способ, атрибуты могут быть любые.
Автор решения: Namerek
→ Ссылка
На правах варианта
import requests
from bs4 import BeautifulSoup
# url = 'https://www.eldorado.ru/c/kvadrokoptery/'
# h = {'user-agent': 'my-app/0.0.3'}
#
# response = requests.get(url, headers=h)
text = """<!DOCTYPE html><html lang="en"><head></head><body><div data-index="003468">Find me</div><div data-index="003469">Find me to</div></body></html>"""
soup = BeautifulSoup(text, 'lxml')
data = soup.select_one('div[data-index="003468"]') # надо data-index
print(data)
<div data-index="003468">Find me</div>
Почитайте про soup sieve и селекторы.
P.S. Что-то берут меня сомнения, что Вы таким образом распарсите сайт по ссылке. Там как минимум selenium нужен