@Evgeniy_Vsl

Как выйти из бесконечной работы браузера при парсинге через Selenium?

Пытаюсь выполнить какую-либо операцию с сайтом через Selenium. Допустим, получить html код сайта. Сам браузер Firefox открывается, загружает страницу сайта и на этом всё - бесконечное исполнение процесса. В документации всё на примере официального сайта Python, но с ним никаких проблем нет. Возможно, на нём не так много динамических ссылок (если я правильно понимаю). Пробовал то же самое с Chrome - результата не дало.
Уже попробовал добавить ожидание загрузки элемента с конкретным тегом. Тоже не помогло.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

firefox_options = Options()
firefox_options.binary = r'C:\\Program Files\\Mozilla Firefox\\firefox.exe'  # Убедитесь, что путь правильный
service = Service('D:\\Code\\Python\\FireFox_Driver\\geckodriver.exe')
driver = webdriver.Firefox(service=service, options=firefox_options)

url1 = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url1)

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))  # Замените на селектор элемента, который вы ожидаете
    )
    page_html = driver.page_source
finally:
    driver.quit()

print(page_html)
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Нейронка это конечно хорошо, но желательно проверять, что она пишет:
# EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))

Ниже код для Chrome и FF (Python 3.10, Windows 11 Pro 23H2) - все прекрасно работает, за исключением сайта-помойки, который грузится минуту:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

options = Options()
service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
driver = webdriver.Chrome(service=service, options=options)

url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
    )
    page_html = driver.page_source
    print(page_html)

except TimeoutException:
    print("Элемент не найден")

finally:
    print('Программа завершена')
    driver.quit()

from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

options = Options()
service = Service(r'D:\project\geckodriver.exe')
driver = webdriver.Firefox(service=service, options=options)

url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
    )
    page_html = driver.page_source
    print(page_html)

except TimeoutException:
    print("Элемент не найден")

finally:
    print('Программа завершена')
    driver.quit()

672b4890b03b0937030403.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы