@robocop45
Only python

Парсер не начинает скролить сайт,что делать?

Парсю сайт, нужно чтобы парсер скролил сайт, до определенного класса в html разметки. более подробно здесь - https://youtu.be/w7YEorllJZI. сайт не скролится
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains

import time


def get_source_html(url):
    chrome_options = Options()
    driver = Service(executable_path="C:\\webdrivers\\chromedriver.exe")
    driver = webdriver.Chrome(options=chrome_options)
    
    driver.maximize_window()

    try:
        driver.get(url = url)
        time.sleep(3)

        while True:
            find_more_element = driver.find_elements_by_class_name("catalog-button-showMore")

            if driver.find_elements_by_class_name("hasmore-text"):
                with open("lesson6/source-page.html", "w") as file:
                    file.write(driver.page_source)
                break
            else:
                actions = ActionChains(driver)
                actions.move_to_element(find_more_element).perfome()
                time.sleep(3)
    except Exception as ex:
        print(ex)
    finally:
        driver.close()
        driver.quit()

def main():
    get_source_html(url = "https://tyumen.zoon.ru/medical/type/detskaya_poliklinika/")

if __name__ == "__main__":
    main()

ошибка:
DevTools listening on ws://127.0.0.1:57572/devtools/browser/200ecaf6-9782-431e-9967-28aa9b57d68b
[11772:10588:0720/161429.055:ERROR:device_event_log_impl.cc(214)] [16:14:29.054] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 
Присоединенное к системе устройство не работает. (0x1F)
[11772:10588:0720/161429.070:ERROR:device_event_log_impl.cc(214)] [16:14:29.069] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: 
Присоединенное к системе устройство не работает. (0x1F)
'WebDriver' object has no attribute 'find_elements_by_class_name'
  • Вопрос задан
  • 474 просмотра
Решения вопроса 1
@DenisShahbazyan
Ниже исправленный код. Те методы, которые вы используете (для поиска элементов), вероятней всего устарели. Еще в методе .perform() была опечатка.

def get_source_html(url):
    chrome_options = Options()
    driver = Service(executable_path="C:\\webdrivers\\chromedriver.exe")
    driver = webdriver.Chrome(options=chrome_options)

    driver.maximize_window()

    try:
        driver.get(url=url)
        time.sleep(3)

        while True:
            find_more_element = driver.find_element(
                By.CLASS_NAME, "catalog-button-showMore")

            if driver.find_elements(By.CLASS_NAME, "hasmore-text"):
                with open("lesson6/source-page.html", "w") as file:
                    file.write(driver.page_source)
                break
            else:
                actions = ActionChains(driver)
                actions.move_to_element(find_more_element).perform()
                time.sleep(3)
    except Exception as ex:
        print(ex)
    finally:
        driver.close()
        driver.quit()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы