Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > Общие вопросы Web
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2021, 14:05   #1
Rezlay
Новичок
Джуниор
 
Регистрация: 23.11.2021
Сообщений: 3
По умолчанию Проблема с парсингом на питоне с помощью Selenium.

Всем привет)
Хотел тут запарсить сайт авто.ру, но столкнулся с проблемой
Если перейти во вкладку "дилеры" (https://auto.ru/dilery/cars/all/) то там, справа вверху, можно указать регион поиска.

В общем, мне нужно указать определенный регион, в селениуме сделал следующим образом:
Посмотрел код, узнал что данная кнопка находиться блоке div с классом "GeoSelect__title-shrinker"
Но данная команда: "driver.find_element_by_class_name( 'GeoSelect__title-shrinker').click()" ничего не выдает.

Затем мне нужно напечатать регион (до этого пункта разумеется не доходит, тк первая команда не работает):
search = driver.find_element_by_class_name(' TextInput__placeholder')
search.clear()
search.send_keys('Самара')

Но вот что я заметил.
На сайте имеется блок div с классом "Popup_js_inited GeoSelect__popup", в котором и лежит поле ввода с классом "TextInput__placeholder", которое мне нужно. Сам div блок пустой, но если нажать на кнопку выбора региона, то этот блок открывается.

В общем, мне нужно либо как-то открыть этот блок, чтобы в него ввести send_keys, либо как-то нажать на кнопку, которая его открывает, при помощи первой команды
Скрины прилагаются
Кнопка которую надо нажать:
Кнопка которую надо нажать.jpg
Скрытый блок
скрытый блок.jpg

Не знаю, пробовал в инструментах разработчика смотреть "Network", может как-то запрос обработать чтобы этот блок раскрылся, но я пока не очень разбираюсь в этом.

Последний раз редактировалось Rezlay; 23.11.2021 в 14:07.
Rezlay вне форума Ответить с цитированием
Старый 23.11.2021, 14:09   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,034
По умолчанию

так, что не выложили пиновский код?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 23.11.2021, 14:36   #3
Rezlay
Новичок
Джуниор
 
Регистрация: 23.11.2021
Сообщений: 3
По умолчанию

Могу)
Код:
import time
from selenium import webdriver

options = webdriver.ChromeOptions()

options.add_argument('user agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36')

url = 'https://auto.ru/'
driver = webdriver.Chrome()

try:
    # заходим на главную страницу сайта
    driver.get(url)
    time.sleep(3)

    #кликаем "дилеры"
    diller = driver.find_element_by_class_name('ServiceNavigation__link_name_dealers').click()
    time.sleep(5)

    # кликаем на выбор региона
    select_region = driver.find_element_by_class_name('GeoSelect__title-shrinker').click()
    time.sleep(5)
    
    # вводим регион
    search = driver.find_element_by_class_name('TextInput__placeholder')
    search.clear()
    search.send_keys('Самара')
    time.sleep(3)

except Exception as ex:
    print(ex)

finally:
    driver.close()
    driver.quit()
Rezlay вне форума Ответить с цитированием
Старый 23.11.2021, 14:55   #4
Rezlay
Новичок
Джуниор
 
Регистрация: 23.11.2021
Сообщений: 3
По умолчанию

В общем в разделе "вводим регион" неверно указан класс("TextInput__placeholder"), нужен его подкласс "TextInput__control", я это изначально заметил, но изменил, потому что "TextInput__control" на странице 3 штуки.
Но сейчас вспомнил и попытался исправить но есть проблема. Я так понял дело не в строке где мы кликаем на выбор регион, потому что она в итоге кликается

Дело в строке где мы вводим регион. Я её исправил на следующее:
search = driver.find_element_by_class_name(' TextInput__placeholder').find_eleme nt_by_class_name('TextInput__contro l')
и так же через xpath:
search = driver.find_element_by_xpath('/html/body/div[6]/div/div[2]/div[1]/label/div/span/input')

Но он выдает ошибку:
Message: no such element: Unable to locate element: {"method":"css selector","selector":".TextInput__c ontrol"}
Rezlay вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с парсингом UKRtortik Общие вопросы Delphi 8 22.03.2014 22:43
Проблема с парсингом RUKatya Общие вопросы Delphi 1 17.03.2014 17:13
проблема с парсингом Pein95 Общие вопросы Delphi 3 23.11.2011 06:08
проблема с парсингом Pein95 Общие вопросы Delphi 5 14.07.2011 20:11