Всем добрый день. Есть парсер, который парсит эту страницу:
https://www.flashscore.ru/
Он кликает на матчи и выводит их ссылку (сайт устроен так, что открывает второй гугл хром и в нем уже этот матч, запустите скрипт и поймёте о чем я говорю). Но после 17 матча (ЛАСК/ШТУРМ) выводит ошибку. Нужно прокручивать страницу вниз, чтобы дальше кликать на матчи. Подскажите, как прокрутить страницу на несколько матчей вниз или вообще до самого низу? Здесь с помощью js это делать? Заранее спасибо.
Код:
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from bs4 import BeautifulSoup
count = 0
driver = webdriver.Chrome(executable_path="C:\\Users\\iljal\\PycharmProjects\\google_sheets\\chromedriver") # здесь указать путь к chromedriver он обычно в той же папке где и Ваш проект
driver.get('https://www.flashscore.ru/')
time.sleep(3) # C:\Users\iljal\PycharmProjects\google_sheets\chromedriver
arr = driver.find_elements_by_css_selector(
".event__match.event__match--scheduled.event__match--oneLine"
)
# optional (if you are not satisfied with the download speed)
driver.set_page_load_timeout(0.5)
for channel in arr:
try:
channel.click()
count += 1
if count == 17:
driver.execute_script(
"var evt = document.createEvent('MouseEvents');evt.initEvent('wheel', true, true);evt.deltaY = -100000;document.querySelector('.yamb-conversation__content').dispatchEvent(evt);") # такая прокрутка не работает, выводит ошибку:
except TimeoutException:
print("data not received. need more time in driver.set_page_load_timeout")
continue
driver.switch_to.window(driver.window_handles[arr.index(channel)+1])
link = driver.current_url
print(link)
driver.switch_to.window(driver.window_handles[0])
После 17 матчей выводит ошибку при попытке прокрутить вниз:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot read property 'dispatchEvent' of null
(Session info: chrome=83.0.4103.97)