Парсинг с бесконечным скроллингом с помощью Selenium, python
Пытаюсь спарсить сайт instajen, где имеется бесконечный скролинг. Однако, получается спарсить только первый 30 постов из 6000, а дальше код больше страницу не скролит. Подскажите, что поменять. Ссылка на сайт "https://instajet.in/catalog"
from time import sleep
from selenium.webdriver import Chrome
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
driver = Chrome(service=Service(ChromeDriverManager().install()))
url = 'https://instajet.in/catalog'
driver.get(url)
previous_height = driver.execute_script('return document.body.scrollHeight')
while True:
driver.execute_script('window.scrollTo(0, document.body.scrollHeight );')
sleep(2)
new_height = driver.execute_script('return document.body.scrollHeight')
if new_height == previous_height:
break
previous_height = new_height
soup = BeautifulSoup(driver.page_source, "lxml")
posts = soup.find_all('div', class_='catalog-cards')
for post in posts:
title = post.find('div', class_='text').text
print(title)
Ответы (1 шт):
Автор решения: Сергей Ш
→ Ссылка
import requests
headers = {'Ch-locale': 'ru'}
params = {
'exclude_blacklisted': 'true',
'exclusives': 'false',
'discounts': 'false',
'favorites': 'false',
'trusted': 'false',
'new': 'false',
'sort_asc': 'false',
'sort_by': 'rating',
'limit': '6699',
'offset': '0',
}
response = requests.get('https://api.instajet.io/api/v1/accounts/catalog', params=params, headers=headers)
ss = response.json()
print(ss['total'])
print(len(ss['accounts']))
print(ss['accounts'][0]['name'])
print(ss['accounts'][-1]['name'])
# 6699
# 6699
# Mammy_margosha
# photo_maznichenochka