Не получается спарсить сайт, получаю пустой список
Не получается спрасить цену и название товаров в Google Colab с сайта https://apteka.ru/search/?q=%D1%81%D0%B5%D0%BC%D0%B0%D0%B2%D0%B8%D0%BA
Мне выдают два пустых списка. Что я не так делаю? Что поправить в коде?
Вот мой код:
import requests
from bs4 import BeautifulSoup
import fake_useragent
user = fake_useragent.UserAgent().random
header = {'user-agent': user}
url = 'https://apteka.ru/search/?q=%D1%81%D0%B5%D0%BC%D0%B0%D0%B2%D0%B8%D0%BA'
response = requests.get(url, headers = header).text
soup = BeautifulSoup(response, 'lxml')
# block = soup.find('span', class_='moneyprice__roubles')
text = soup.find_all('span', class_='catalog-card__name emphasis')
price = soup.find_all('span', class_='moneyprice__roubles')
print(text, price)
Ответы (2 шт):
Автор решения: geo
→ Ссылка
Чего вы хотите добиться вот этим:
class_='catalog-card__name emphasis'
class_='moneyprice__roubles'
?
Поясните, не вижу такого элемента в возвращаемых данных.
Вот так списки наполняются:
import requests
from bs4 import BeautifulSoup
import fake_useragent
user = fake_useragent.UserAgent().random
headers = {'user-agent': user}
url = 'https://apteka.ru/search/?q=%D1%81%D0%B5%D0%BC%D0%B0%D0%B2%D0%B8%D0%BA'
response = requests.get(url, headers=headers).text
soup = BeautifulSoup(response, 'lxml')
# block = soup.find('span', class_='moneyprice__roubles')
text = soup.find_all('span')
price = soup.find_all('span')
print(*text, *price, sep='\n')
Автор решения: Сергей Ш
→ Ссылка
Почитать на досуге ссылка №1 ссылка №2
пример кода
import requests
headers = {
'ym-aru-visorc': 'ZG50OjE7dzowO2M6MDtkcHI6MTtzY0RwdDoyNC8yNDtzY1dkOjE2ODA7c2NIdDoxMDUwO3duT1dkOjE2OTY7d25PSHQ6MTAyNjt3bklXZDoxNjgwO3duSUh0Ojg5NztjbGlXZDoxNjYzO2NsaUh0Ojg5Nzt3blg6LTg7d25ZOi04O3duSHN0TG46MTt0ejotMzAwO3B0OldpbjMyOw==',
'Origin': 'https://apteka.ru',
'Referer': 'https://apteka.ru/',
}
params = {
'page': '0',
'pageSize': '25',
'iPharmTownId': '',
'withprice': 'false',
'withprofit': 'false',
'withpromovits': 'false',
'phrase': 'семави',
}
response = requests.get('https://api.apteka.ru/Search/ByPhrase', params=params, headers=headers)
for x in response.json()['result']:
print(x['tradeName'])
print(x['minPrice'])
результат выполнения
СЕМАВИК НЕКСТ
6989.0
Набор из 3-х упаковок Семавик Некст 2,4 со скидкой
22858.2
Набор из 3-х упаковок Семавик Некст 1,7 со скидкой
17821.95
Набор из 2-х упак Семавик 3мл и 1 упак Семавик Некст 1,7 со скидкой
15918.39
Набор из 2-х упаковок Семавик Некст 2,4 со скидкой
15776.64
Набор из 3-х упаковок Семавик 1,34 мг/мл
14417.7
Набор из 2-х упаковок Семавик Некст 1,7 со скидкой
12300.64
Набор Семавик 3мл и Семавик Некст 1,7 со скидкой
11125.84
Набор из 2-х упаковок Семавик 1,34 мг/мл
10177.2
СЕМАВИК
5654.0