Как правильно сделать цикл

Вот есть код парсера на Селениуме, нужно что бы после сбора всех элементов страницы он автоматически прокручивал страницу и собирал дальше, как это можно было бы реализовать? Или можно попробовать второй варианты, а именно: Что бы страница с самого начала прокручивалась до конца, а потом уже собирала данные.

Я использую команду для прокрутки страниц вот такую: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

А для того что бы нажать на кнопку вот эту: try:driver.find_element_by_css_selector('.show-more--horizontal[_ngcontent-rz-client-c57]').click() except:print('Button Not Found')

Вот сама страница с которой нужно парсить: https://rozetka.com.ua/search/?page=1&producer=gazer&seller=rozetka&text=Gazer

Вот html код и css кнопки:

.show-more--horizontal[_ngcontent-rz-client-c57] {
    flex-direction: row;
    padding-top: 24px;
    padding-bottom: 24px;
}
<a _ngcontent-rz-client-c57="" class="show-more show-more--horizontal" rzscrollertrack=""><svg _ngcontent-rz-client-c57="" class="show-more__icon"><use _ngcontent-rz-client-c57="" xlink:href="#icon-load-more" xmlns:xlink="http://www.w3.org/1999/xlink"></use></svg><span _ngcontent-rz-client-c57="" class="show-more__text"><!----> Показать еще 36 товаров </span></a>

Вот сам код парсера:

import time 
import pandas as pd
from selenium.webdriver import Chrome
from datetime import datetime


webdriver = r"C:\Users\К.Бояр (Второй)\source\repos\RozetaParcer\chromedriver.exe"

driver = Chrome(webdriver)
driver.implicitly_wait(10)

total = []
for i in range(1,14):
    driver.get("https://rozetka.com.ua/search/?page={}&producer=gazer&seller=rozetka&text=Gazer".format(i))
    driver.implicitly_wait(10)
    items = driver.find_elements_by_css_selector(".goods-tile.ng-star-inserted")
    cur_date = datetime.now().strftime("%d_%m_%Y")
    for item in items:
        t_name = item.find_element_by_css_selector('.goods-tile__title').text
try:t_price = item.find_element_by_css_selector('.goods-tile__price-value').text
except:print ('')
       
t_nal = item.find_element_by_css_selector('.goods-tile__availability').text    
row = cur_date, t_name, t_price, t_nal
total.append(row)

driver.close()
    
df = pd.DataFrame(total, columns=['Date','Name', 'Price', 'Nal'])
df.to_csv(f'Rozetka_parcer_{cur_date}.csv')

Еще интересно то что без проверки нажатие на кнопку видимо не происходит, пишет что в определенной точки не нашел ссылку, думаю проблема просто в селекторе.


Ответы (0 шт):