Скажу сразу, мне не очень нравится код, поэтому вот несколько рекомендаций.
Наученный опытом, скажу, что использовать XPATH намного целесообразнее, но только не абсолютный указатель пути, а индексы, вот
ссылка на документацию
Предлагаю организовать структуру поиска, немного иначе, вместо того, чтобы икать класс, в котором содержатся плитки, сразу искать их, это сэкономит время:
tabs = browser.find_elements(By.XPATH,'//div[@class="col-12 col-md-6 col-lg-4 col-xl-3"]') #Ищем все товарные плитки
Теперь, когда у нас есть список со всеми плитками, пройдемся по нему и подостаем все, что нам нужно:
for i in tabs:
image = i.find_element(By.XPATH,'//img') #Достаем из плитки изображение
name = i.find_element(By.XPATH,'//a[@class="card-title item_title sp-line-2"]') #Достаем из плитки название
price = i.find_element(By.XPATH,'//div[@class="price"]') #Достаем из плитки цену
print('Изображение: ',image.get_attribute('src'),' Название: ',name.text,' Цена: ',price.text) #Выводим всю информацию
Идея с отправкой кнопок для прокрутки, тоже не очень, лучше вместо этого запусти следующий скрипт, он автоматически прокрутит вниз на всю длину страницы:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
Вот полный скрипт для парсинга, который получился у меня, работает как часы, поэтому прошу к ознакомлению:
from webdriver_manager.chrome import ChromeDriverManager #Для пакетов Хромиума
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
service_package = Service(ChromeDriverManager(log_level=0).install()) #Устанавливаю пакеты Хромиума
options = webdriver.ChromeOptions()
#options.add_argument('--headless')
driver = webdriver.Chrome(service=service_package,options=options)
driver.maximize_window() #Разворачиваем страницу, даже если в headless режиме, потому что не всё грузится
driver.get("https://obnovi-oboi.ru/goods?category=oboi")
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Скроллим до конца
time.sleep(2)
driver.find_element(By.XPATH,'/html/body/main/section/div/div[2]/button').click() # Кликаем кнопку
time.sleep(5)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Скроллим до конца
time.sleep(2)
tabs = driver.find_elements(By.XPATH,'//div[@class="col-12 col-md-6 col-lg-4 col-xl-3"]') #Ищем все товарные плитки
for i in tabs:
image = i.find_element(By.XPATH,'//img') #Достаем из плитки изображение
name = i.find_element(By.XPATH,'//a[@class="card-title item_title sp-line-2"]') #Достаем из плитки название
price = i.find_element(By.XPATH,'//div[@class="price"]') #Достаем из плитки цену
print('Изображение: ',image.get_attribute('src'),' Название: ',name.text,' Цена: ',price.text) #Выводим всю информацию
Если будут ещё вопросы по поводу Selenium, обращайся !