From 2c9c03c32a2db6c4a3f9a75c412ee1ee3b80b0d2 Mon Sep 17 00:00:00 2001 From: Ilia Miheev Date: Fri, 18 Jul 2025 13:59:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20=E2=80=94=20gpsa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ipars/ParsManagerCode.py | 48 +++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/ipars/ParsManagerCode.py b/ipars/ParsManagerCode.py index 8c2f613..29c21dd 100644 --- a/ipars/ParsManagerCode.py +++ b/ipars/ParsManagerCode.py @@ -108,11 +108,28 @@ class Pars: except Exception as e: raise RuntimeError(e) from e + def __scrollAndSave(self, driver, timeSleep, pathToSaveFile): + # Прокручиваем страницу до самого низа + lastHeight = driver.execute_script("return document.body.scrollHeight") + while True: + # Прокручиваем до низа страницы + driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") + # Ждем загрузки страницы + sleep(timeSleep) + # Вычисляем новую высоту страницы + newHeight = driver.execute_script("return document.body.scrollHeight") + if newHeight == lastHeight: + break + lastHeight = newHeight + htmlContent = driver.page_source + with open(pathToSaveFile, "w", encoding="utf-8") as file: + file.write(htmlContent) + def getDinamicPage(self, pathToSaveFile: str, url: str, closeWindow: bool = 1, timeSleep: int = 2) -> None: '''Получаем динамическую страницу pathToSaveFile: путь, куда сохранится полученный файл - url: ссылка на данные + url: ссылка на сайт closeWindow (0/1): если указана единица, то браузер открывается в фоновом режиме, 0 — открывается как обычное приложение timeSleep: время ожидания браузера перед тем как скролить страницу дальше''' @@ -124,22 +141,17 @@ class Pars: # открываем браузер with webdriver.Chrome(options=options) as driver: driver.get(url) - # Прокручиваем страницу до самого низа - lastHeight = driver.execute_script("return document.body.scrollHeight") + self.__scrollAndSave(driver, timeSleep, pathToSaveFile) - while True: - # Прокручиваем до низа страницы - driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") - # Ждем загрузки страницы - sleep(timeSleep) - # Вычисляем новую высоту страницы - newHeight = driver.execute_script("return document.body.scrollHeight") - if newHeight == lastHeight: - break - lastHeight = newHeight + def gpsa(self, pathToSaveFile: str, url: str, timeSleep=2): + '''Получаем страницу в полуавтоматическом режиме + gpsa - get page semi-automatically - # Получаем HTML-код страницы - htmlContent = driver.page_source - # Сохраняем HTML-код в файл - with open(pathToSaveFile, "w", encoding="utf-8") as file: - file.write(htmlContent) + pathToSaveFile: путь, куда сохранится полученный файл + url: ссылка на сайт + timeSleep: время ожидания браузера перед тем как скролить страницу дальше''' + + with webdriver.Chrome() as driver: + driver.get(url) + a = input('Нажми ENTER когда закончишь') + self.__scrollAndSave(driver, timeSleep, pathToSaveFile)