Парсинг сайтов. Python
Добрый вечер, пытаюсь реализовать парсер для сайта https://5ka.ru/special_offers , чтобы по итогу получить полный список товаров с сайта. По переходу на сайт вам доступен каталог первых 20 или 30, не суть важно, определенного количества товаров. После надо подгружать следующую группу через кнопку 'Загрузить еще', но проблема в том что после ее нажатия url страницы не меняется. Собственно вопрос, как можно реализовать, чтобы все страницы через эту кнопку сразу загружались. Слышал что-то о библиотеке Silenium.
Но это только первая проблема, вторая заключается в том что парсер подгружает только половину из доступных в первом листе товаров, если запустите код, то увидите, что последним элементом будет Айва 1кг, хотя там дальше еще 10 или 15 позиций.
Вот код:
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 вызовы, парсите ответы - профит.
Спасибо! Только что опубликовал вторую проблему дополнив вопрос, можете что-то подсказать?
Немного не понимаю о чем вы. Какой ответ сервера?
У вас последним выдало Дск Картофель мытый при запуске моего кода или вы сами написали?
Если вы про код страницы, по которой код, что я написал переходит по get запросу, то да. Там видно все позиции, но при запуске кода отображается только часть, и последняя айва, хотя должно быть как у вас, последним элементом картошка
Понял! Спасибо
Да, возвращаясь к вопросу о дозагрузке товаров, не могли бы вы показать мне как можно реализовать то что вы описали?
По поводу того что парсер не загружал все элементы с сайта я разобрался, код работает отлично, изначально я запускал программу в VS code, после подумал что что-то не так с данным редактором и перешел в PyCharm, там все работает замечательно. Почему-то VS code не дает загрузить весь текст, может быть ограничение по символам. Это ограничение по символам можно как настроить?
Попробовал поработать с вашей ссылкой, насколько я понял там по умолчанию page = 1, то есть это первая страница, 2ая это значит что подгружается после первого нажатия 'Загрузить еще', 3ая это после второго нажатия 'Загрузить еще' и т.д, я правильно понял?
Можно еще попробовать библиотеку requests_html она позволяет работать с JS. То есть к примеру можно прокрутить страницу или нажать на какой-то элемент (кнопку). С ее помощью после загрузки страницы вы можете выполнить свой JS код.