Selenium 4.8 Python Проблема парсинга сайта
Изучаю Selenium на языке Python и я решил создать свой небольшой проект, чтобы парсить с сайта магнита скидки и сохранять их где-нибудь.
И я не понимаю то ли я криворукий, то ли сайт настолько плохо оптимизирован.
Вот код:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup as bs
from time import sleep
from math import ceil
url = 'https://magnit.ru/promo/?format[]=mm'
pause_time = 2
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("window-size=1920,1080")
s=Service('D:\programm\scraping\selenium\chromedriver.exe')
def get_cards(url):
driver = webdriver.Chrome(service=s, chrome_options=options) #chrome_options
driver.get(url)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'modal_confirm_age__step1')))
acc_btn = driver.find_element(By.XPATH, "//button[contains(text(), 'Да')]")
acc_btn.click()
html = driver.page_source
last_height = driver.execute_script("return document.body.scrollHeight")
all_dis = driver.find_element(By.XPATH, "/html/body/div[3]/div/div/div[3]/div[1]/div[2]/p").text
all_dis_split = all_dis.split()
num = int(all_dis_split[1])
print(f'Всего {num} товаров со скидкой')
max_count = (ceil(num/50) - 1)*12
count = 0
while count <= max_count:
if count % 11 == 0: print(f'Сканирую новую страницу товаров')
driver.execute_script("scrollBy(0, 500);")
count += 1
sleep(pause_time)
cards = driver.find_elements(By.CLASS_NAME, 'card-sale-new card-sale-new__catalogue')
return cards
if __name__ == '__main__':
cards = get_cards(url)
print(len(cards))
for i in cards:
print(i)
При запуске этого кода он даже до конца дойти не может и я не могу понять, работает ли он или нет. Мой компьютер просто начинает сильно тормозить, хотя система не слабая, и просто он начинает грузить страницы по минуте-две. Вопрос - это я неудачно выбрал сайт для своего первого проекта, или же всё таки проблема в моём коде или моей системе?