Задать вопрос
@dancer_and_programer

Как прокручивать страницу вверх Selenium Python?

Всем добрый день. Пишу скрипт на Python, который парсит количество публикаций с этой страницы: https://yandex.ru/chat/#/chats/1%2F0%2Fccb05ef5-14...

Но парсер видит только первые 6 публикаций, нужно прокручивать страницу вверх. Дописал строку:

driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")


Но всё равно не работает, по прежнему 6 публикаций. Подскажите, как сделать так, чтобы скрипт прокручивал вверх и спарсил количество ВСЕХ публикаций на этом канале?*

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup


list_with_link = ['https://yandex.ru/chat/#/chats/1%2F0%2Fccb05ef5-1472-4e50-a926-602807a6ef94']
driver = webdriver.Chrome()
driver.implicitly_wait(10)
for url in list_with_link:
    driver.get(url)

    driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")
    count = 0
    html = driver.page_source
    soup = BeautifulSoup(html, 'lxml')
    count_of_publ = soup.find_all('div', class_='yamb-message-row')

    for text in count_of_publ:
        count += 1
        
    print('Количество публикаций:', count)
  • Вопрос задан
  • 2404 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
coderisimo
@coderisimo
Общая идея. Вам нужно крутить колесико (скролл) мыши через JS.
Запихните в driver.execute_script что-то в этом роде :
var evt = document.createEvent('MouseEvents');
evt.initEvent('wheel', true, true); 
evt.deltaY = -100000; 
document.querySelector('.yamb-conversation__content').dispatchEvent(evt);

вместо 10000 можно window.innerHeight.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы