Top.Mail.Ru
Ответы
Аватар пользователя
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Парсинг сайтов. Python

Добрый вечер, пытаюсь реализовать парсер для сайта https://5ka.ru/special_offers , чтобы по итогу получить полный список товаров с сайта. По переходу на сайт вам доступен каталог первых 20 или 30, не суть важно, определенного количества товаров. После надо подгружать следующую группу через кнопку 'Загрузить еще', но проблема в том что после ее нажатия url страницы не меняется. Собственно вопрос, как можно реализовать, чтобы все страницы через эту кнопку сразу загружались. Слышал что-то о библиотеке Silenium.
Но это только первая проблема, вторая заключается в том что парсер подгружает только половину из доступных в первом листе товаров, если запустите код, то увидите, что последним элементом будет Айва 1кг, хотя там дальше еще 10 или 15 позиций.
Вот код:

12345678
 import requests 
import lxml 
from bs4 import BeautifulSoup 
url = 'https://5ka.ru/special_offers' 
html_text = requests.get(url).text 
html_text_lxml = BeautifulSoup(html_text, 'lxml')
a = html_text_lxml.find_all('div','product-card item') 
print(a) 


Заранее спасибо!

По дате
По рейтингу
Аватар пользователя
Новичок

селениум это фреймворк автоматизации тестирования и он не нужен для парсинга.
достаточно изучить запросы и ответы сайта при переходах по кнопкам, и далее имитировать их путём вызова через любой доступный вам REST фреймворк. делаете http вызовы, парсите ответы - профит.

Аватар пользователя
Гуру

Можно еще попробовать библиотеку requests_html она позволяет работать с JS. То есть к примеру можно прокрутить страницу или нажать на какой-то элемент (кнопку). С ее помощью после загрузки страницы вы можете выполнить свой JS код.