Python Selenium #8 Переключение между вкладками | Парсинг avito

Поділитися
Вставка
  • Опубліковано 10 лис 2024

КОМЕНТАРІ • 116

  • @gladiator-5674
    @gladiator-5674 3 роки тому +11

    Спасибо Вам за труд, очень много ценной информации на канале!
    Хотел бы поделиться информацией по поводу ожиданий в селениуме. Можно использовать неявные ожидания как в этом видео с использованием driver.implicitly_wait(sec), но в таком случае достаточно вызвать данный метод только один раз(!) и тогда для каждого метода WebDriver'a будет выполняться это неявное ожидание. Но также можно выбрать явное ожидание, указывая в каждом методе WebDriverWait(driver, sec).until(EC.condition(By.XREF, 'xref_of_element)) в таком случае драйвер будет ожидать только конкретный случай, и для каждого события придется прописывать такое условие.
    Надеюсь этот пост будет полезен!

    • @PythonToday
      @PythonToday  3 роки тому +1

      Спасибо большое за фидбэк!

    • @watercrow1866
      @watercrow1866 2 роки тому +2

      Тоже заметил странность) Собственно, implicitly_wait() - это как установка общего таймаута для driver.find_element-подобных запросов. Спасибо за инфу.

  • @VladVons
    @VladVons 2 роки тому

    Уроки супер. Подписка.
    Асинхронности не хватает для запуска одновременного парсинга нескольких сайтов.

  • @shoxruxyusupov5459
    @shoxruxyusupov5459 2 роки тому +1

    Я сделал подобное но в bs4, сначала собрал линки кардов потом добавил их в set() потом прошелся по каждой ссылке и сорал данные, мне ваша идея понравилась но помне это трудновато, но я научился спасибо за контент, щас selenium немного изменился и код пришлось немного исправить я справился спасибо вам

  • @chlorine7785
    @chlorine7785 3 роки тому +1

    Четко рассказываешь, давай больше видео по Selenium

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк

  • @borg9549
    @borg9549 3 роки тому

    Просто коммент. Не ожидал что селениум такая полезная вещь

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк и поддержку! Рад что видео помогают

  • @konfo666
    @konfo666 Рік тому

    for x in reversed(range(len(browser.window_handles))):
    browser.switch_to.window(browser.window_handles[x])
    цикл помогает прыгать дальше по страницам без лишнего кода:)

  • @stannisfoch8746
    @stannisfoch8746 3 роки тому +4

    Спасибо за очередное отличное видео, жду выпуски с нетерпением, каждый раз беру для себя какие-то новые фичи спасибо, очень хотелось бы увидеть ещё видео капчу на сайтах , и ещё про то как красиво настроить интерфейс pycharm

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю 💪 По капче видео выкладывать не буду, есть темы которые лучше не трогать на ютубе

    • @stannisfoch8746
      @stannisfoch8746 3 роки тому

      @@PythonToday да , точно , не подумал об этом , но все равно спасибо шаг за шагом иду по твоим видео , очень многому научился спасибо !!

  • @luckytima2315
    @luckytima2315 3 роки тому +3

    Отличные видео ,ждем продолжение ,такого контента мало по selenium :(

    • @PythonToday
      @PythonToday  3 роки тому +1

      Спасибо за фидбэк 💪

  • @КостяПриходько-л5ш
    @КостяПриходько-л5ш 3 роки тому +1

    Опять крутой видос, спасибо

  • @РадмирВильданов-м8ц

    Спасибо большое за видео, как всегда узнал что то новое. Теперь жду видео с явными ожиданиями, так как сам не смог разобраться :D

  • @diwhiteps
    @diwhiteps 3 роки тому

    Мое почтение, все очень круто. Спасибо большое! Здоровья

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк) Взаимно!

  • @Proborder
    @Proborder 3 роки тому +10

    *Видео как всегда полезное, но контента малова-то как по мне.*
    Думаю, можно было бы разнообразить чуть-чуть, как пример это вывести все в json по типу: Имя, название, активность юзера, ссылка.
    Ну и ещё проблема возникает, при частых запросах на авито с одного ip банит ссесию. Очевидно решаемая проблема добавлением списка прокси, но как пример для видео, думаю было бы полезным для некоторых)

    • @SeriesWOT
      @SeriesWOT 3 роки тому

      Одобряю, можно ещё добавить, как это все записать в файл))

  • @birdwatcher_channel
    @birdwatcher_channel 2 роки тому

    огромное спасибо за туториал)

  • @levkolosovikb-9363
    @levkolosovikb-9363 3 роки тому

    спасибо большое за такие подробные видеоуроки, надеюсь будут видео с заказов фриланса, где ты используешь selenium

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк

  • @1nt0men35
    @1nt0men35 3 роки тому

    Спасибо, помог, быстро и по существу

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк, рад что полезно

  • @СемёнПожарский-ф7д
    @СемёнПожарский-ф7д 3 роки тому +1

    Круто, спасибо!

  • @АндрейИванов-д5к
    @АндрейИванов-д5к 2 роки тому +1

    Привет! Спасибо за полезную информацию!
    Если у кого селен ругается на driver.find_element......., то это изменился синтаксис в самой библиотеке, но и со старым методом работает)

    • @МуратСултанов-о7б
      @МуратСултанов-о7б 2 роки тому

      привет. А где новый синтаксис найти на него? чтобы не ругался, и так работает, но интересно посмотреть новый синтаксис.

    • @АндрейИванов-д5к
      @АндрейИванов-д5к 2 роки тому

      @@МуратСултанов-о7б Привет, на сайте селениума, там вся документация есть.

    • @МуратСултанов-о7б
      @МуратСултанов-о7б 2 роки тому +2

      @@АндрейИванов-д5к driver.find_elements(By.XPATH, "//div[@data-marker='item-photo']") так должно быть? или driver.find_element(By.CLASS_NAME, "seller-info-name")? или я не ту документацию смотрю?

    • @АндрейИванов-д5к
      @АндрейИванов-д5к 2 роки тому

      @@МуратСултанов-о7б Да, всё верно. Синтаксис проще стал, но это моё мнение.

    • @МуратСултанов-о7б
      @МуратСултанов-о7б 2 роки тому

      @@АндрейИванов-д5к name 'By' is not defined - PyCharm у меня такое пишет, когда запускаю с новым синтаксисом

  • @Чуваш-ы3ц
    @Чуваш-ы3ц 2 роки тому

    полезное видео, хочу попробовать спарсить несколько разделов с товарами, через селениум

  • @Владимир-щ8н3ь
    @Владимир-щ8н3ь 3 роки тому

    Спасибо за ролики)

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк 👍

  • @СергейПетров-ц3ъ

    Очень круто, но я так думаю, что это может привести к большому количеству запросов к целевому серверу и он может за это блокернуть, если не использовать прокси

  • @cryptostarscreamcryptostar5697

    Добрый день, не могу подцепиться к имени пользователя в авито объявлении они изменили код, можете подсказать, какой класс или xpass, взять у какого элемента?

  • @Manuel_UA
    @Manuel_UA 3 роки тому +3

    Привет, хотелось бы видео про Ожидания(Wait) в Selenium. Благодарю

  • @lexluter963
    @lexluter963 3 роки тому

    Круто

  • @sotiriskef
    @sotiriskef 3 роки тому

    keep up the good work❤❤

    • @PythonToday
      @PythonToday  3 роки тому

      Thanks, I will ❤
      About your question before. Did u try add extensions across a profile? I mean something like this:
      profile = webdriver.FirefoxProfile()
      profile.add_extension(extension=self.path_fire_fox_file)
      self.driver = webdriver.Firefox(profile)

  • @ИванАбрамов-л5ы
    @ИванАбрамов-л5ы 3 роки тому

    Спасибо)

    • @PythonToday
      @PythonToday  3 роки тому

      Благодарю за фидбэк 👍

  • @user_alex_
    @user_alex_ 10 місяців тому

    👍👍👍👍👍👍👍👍👍👍👍👍

  • @ДенИнг
    @ДенИнг 3 роки тому

    Даёшь парсинг 2gis и яндекс карт!

  • @MrZAHAR11111
    @MrZAHAR11111 8 місяців тому

    Пытаюсь пройтись по всем объявлениям на странице, авито блокирует по ip. Надеюсь будет в дальнейших видео

  • @WCoder
    @WCoder 2 роки тому

    Круто. Жду парсинг номеров из авито :)

  • @alexanderarkharov3663
    @alexanderarkharov3663 3 роки тому

    Привет!! Видео супер! Смотрятся с огромным интересом. А можешь записать видео по сохранению файлов в выбранную дирректорию и как ее изменять в сессии при необходимости.?

    • @PythonToday
      @PythonToday  3 роки тому

      Привет, спасибо за фидбэк. Сохранение файлов с туториалом по Selenium не очень клеится. В плейлисте по парсингу и в инстаграм боте мы качали и сохраняли файлы много раз. Посмотри. А так работу с файлами когда-нибудь опишу в плейлисте по изучению Python для новичков. Просто не хватает времени.

    • @alexanderarkharov3663
      @alexanderarkharov3663 3 роки тому

      @@PythonToday я предыдущие видео смотрел. Там все понятно. В селениум же запускается браузет и у него есть директория по дефалту для загрузки файлов. Вопрос и помощь в том как устанавливать другой путь для загруки файлов и его изменять во время уже запущенного webdriver., когда на странице есть кнопка сохранить или скачать а файлы распределить по разным директориям. Спасибо заранее!!

  • @pavelnovikov74
    @pavelnovikov74 3 роки тому +1

    Спасибо за твои уроки! Я прошу прощения, но у меня вопрос есть - можно ли в селениум загружать фото на сайт? Например аватарки, профиля в соцсетях заполнять? Прошу прощения за косноязычность)

    • @PythonToday
      @PythonToday  3 роки тому +2

      Спасибо за фидбэк. Конечно можно, это ведь полноценное управление браузером. В одном из видео с instagram ботом, мы рассматривали этот момент. Т.е как можно прикрепить фото к форме отправки сообщений. Было это в видео по отправке сообщений в директ.

    • @pavelnovikov74
      @pavelnovikov74 3 роки тому

      @@PythonToday Спасибо большое!!!

  • @martinmefjus1970
    @martinmefjus1970 2 роки тому +1

    Открывай лайкоприемник, сейчас отгружать буду)

  • @user-sc4ve6ky1v
    @user-sc4ve6ky1v 2 роки тому +1

    Как отследить активность нескольких определенных пользователей. Проблема в том что нужен вход в авито, чтоб объявления стали видны. вебдрайвер не пускает авито. Как это сделать?

  • @Gorisso
    @Gorisso 3 роки тому +1

    Пожалуйста снимите видео ,как закинуть selenium бота в хостинг ,а то не получается и информаци только для Linux (

  • @Vlad1998996
    @Vlad1998996 3 роки тому +1

    Почему не взять элемент, но с уже :nth-child(2)? А через элементы и выбираешь уже с них нужный тебе элемент с классом?

    • @PythonToday
      @PythonToday  3 роки тому

      Не понял тебя. Поясни.

    • @Vlad1998996
      @Vlad1998996 3 роки тому +1

      Ну если элементов несколько с одним и тем же классом например, и тебе надо выбрать второй, то можно выбрать его при помощи :nth-child(номер по счёту).
      хз передаст ли ютуб ссылку, но вот:
      stepik.org/lesson/102555/step/7?unit=196193

    • @Vlad1998996
      @Vlad1998996 3 роки тому

      Правда это ошмётки информации.

  • @maximrossa8547
    @maximrossa8547 3 роки тому

    А как узнать какие параметры есть у функции find_element_by_class_name? Есть что-то еще помимо click() и если есть, где найти список это?

    • @PythonToday
      @PythonToday  3 роки тому +1

      А документация для чего? Либо в IDE зажми ctrl в pycharm и нажми на любой метод или класс, получишь описание.

  • @VladVons
    @VladVons 2 роки тому

    а есть ли возможность парсить сайт асинхронно ?

  • @eldardev
    @eldardev Рік тому

    а как переключаться между страницами?чтобы парсить уже со второй страницы и тд

  • @vladimirlrt2599
    @vladimirlrt2599 Рік тому

    А как переключится на вкладку с историей браузера и сделать с нее скрин?

  • @egorkomarov4719
    @egorkomarov4719 3 роки тому

    Что скажешь про паппетир?
    Он заменит селениум?

    • @PythonToday
      @PythonToday  3 роки тому

      Не работал с этой библиотекой

  • @АйзекТерновский
    @АйзекТерновский 2 роки тому

    А как сделать так, чтобы он заходил по ссылке и выходил, но без написания кода для каждой страницы. Вдруг, у меня 200к ссылок. Можно ли по циклу это сделать? И есть да,то как?

  • @МухаметджинТимур
    @МухаметджинТимур 3 роки тому

    Спасибо. То что искал. Если сайт тормознутый и грузится не равномерно, то думаю слип не сработает и мы получим, что элемент не найден или что то в этом роде, тогда как в этом случае быть?

    • @PythonToday
      @PythonToday  3 роки тому

      Писать try/except и обрабатывать любое место где возможна ошибка.

  • @wordofworld6874
    @wordofworld6874 Рік тому

    Можно его как-то в своем браузере открыть, а не в том, который открывает он сам. Это мне нужно чтобы не авторизироваться постоянно

  • @VitaliiAkhmetzianov
    @VitaliiAkhmetzianov Рік тому

    Угар, я у того челика с обьявы видеокарты брал xD

  • @software9256
    @software9256 3 роки тому

    А на гет пост можно парсить авито?)

  • @grigoriyeltsov
    @grigoriyeltsov 3 роки тому

    Я извиняюсь за возможно глупый вопрос, но сам его не могу решить. Вот есть item[0], item[1] и тд..наши карточки товаров. Есть количество этих элементов на странице и есть определенное количество страниц. Можете, пожалуйста, подсказать код как проделать функцию click с каждым элементом на странице и затем постранично. Пытался целый день разобраться, так и не смог. Заранее спасибо!

    • @PythonToday
      @PythonToday  3 роки тому +4

      Я бы сначала собрал пагинацию, например 12 страниц. Затем запустил цикл от 1-12 в котором собирал бы все ссылки на карточки. Затем записал ссылки в файл и уже читая из него ссылки заходил бы на каждую. Можно обойтись и без записи, сразу заходить на каждую карточку в цикле пагинации.

    • @grigoriyeltsov
      @grigoriyeltsov 3 роки тому

      @@PythonToday спасибо за ответ! И за ваши уроки! Учусь по ним

    • @PythonToday
      @PythonToday  3 роки тому

      💪

  • @bibus5082
    @bibus5082 2 роки тому

    Может кто подсказать? Не получается спарсить данные с страницы авито, делаю так как на видео, а пишет: Message: no such element: Unable to locate element: {"method":"css selector","selector":".item-view-content"} при driver.find_element(By.CLASS_NAME, "item-view-content") хотя такой класс точно есть

  • @sunat8860
    @sunat8860 Рік тому

    Жаль что нельзя перейти на всплывающее окно внутри нулевого окна , которая содержит хтмл другого сайта(

  • @arxxximed
    @arxxximed 3 роки тому

    Вот все равно не понимаю , для чего это? Это как бы личная автоматизация браузера?

    • @PythonToday
      @PythonToday  3 роки тому

      Почитай например про тестирование сайтов, ну и конечно отличный инструмент для скрапинга/парсинга

  • @FlintRid
    @FlintRid 3 роки тому

    не могу сообразить, цену то как стянуть((

    • @FlintRid
      @FlintRid 3 роки тому

      как только написал - сразу дошло)
      Спасибо за крутые уроки!

    • @PythonToday
      @PythonToday  3 роки тому +1

      Большое спасибо за фидбэк! Молодцом что сам разобрался, лучший опыт

  • @borg9549
    @borg9549 3 роки тому

    Бл два дня сидел думал чо вторую вкладку не открывает. XPATH я скопировал вставил и дописал item((( надо было просто все див блоки брать

  • @ДмитрийОльшанников-м4б

    О дизлайков за пол года, похвально)))

    • @PythonToday
      @PythonToday  3 роки тому +1

      Спасибо, рад что полезно

  • @camoandkrooked69
    @camoandkrooked69 2 роки тому +4

    Может пригодится кому :)
    items=driver.find_elements(By.XPATH,"//div[@data-marker='item-photo']")
    items[0].click()

    • @Abdikmon
      @Abdikmon 2 роки тому

      Спасибо. У меня была проблема что я использовал driver.find_element. Я уже искать начал в чём проблема, почему не находит все элементы в виде списка
      🤣🤣

    • @АндрейОт
      @АндрейОт 2 роки тому

      "xpath"

  • @powerrsky
    @powerrsky 2 роки тому +1

    Добрый день! У меня в 22 году этот метод не работает от слова совсем.
    items = driver.find_element_by_xpath("//div[@data-marker='item-photo']")

    • @DrDrag-wu4vg
      @DrDrag-wu4vg 2 роки тому

      может потому что изменили маркеры?

    • @ongdashsyrgash5463
      @ongdashsyrgash5463 2 роки тому

      Selenium немного поменял метод. Получается в твоём случае: items=driver.find_element((By.XPATH, "//div[@data-marker='item-photo']")). Примерно так если не ошибся

  • @powerrsky
    @powerrsky 2 роки тому +1

    items = driver.find_element_by_xpath("//div[@data-marker='item-photo']")
    items[0].click()
    ругается и не нажимает клик.
    TypeError: 'WebElement' object is not subscriptable

    • @wind_nict6330
      @wind_nict6330 2 роки тому

      Такая же проблема

    • @hellboychick
      @hellboychick 2 роки тому

      @@wind_nict6330 метод find_element_by_xpath возвращает один элемент, а вы пытаетесь его итерировать, т.е итерировать объект. Для того, чтобы получить все элементы надо использовать find_elements_by_xpath("//div[@data-marker='item-photo']")) или find_elements(By.XPATH, ("//div[@data-marker='item-photo']")(второе в новых версиях selenium).

    • @АндрейОт
      @АндрейОт 2 роки тому

      cейчас таких методов вроде нет больше в селениум: ind_element_by_xpath

  • @leonidasspartasson9759
    @leonidasspartasson9759 3 роки тому

    items = driver.find_element_by_xpath("//div[@data-maker='item-photo']")
    Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@data-maker='item-photo']"}
    Через инспектор уже тоже не ищет эти элементы =(

    • @kosko4703
      @kosko4703 3 роки тому

      method deprecated/устарел find_element('by', 'any')

    • @leonidasspartasson9759
      @leonidasspartasson9759 3 роки тому

      @@kosko4703 Спасибо за подсказку. Но при использовании find_element тоже ошибка: Message: invalid argument: invalid locator

    • @kosko4703
      @kosko4703 3 роки тому +1

      @@leonidasspartasson9759 неверный locator, т.е. первый аргумент локатор - 'xpath'

    • @leonidasspartasson9759
      @leonidasspartasson9759 3 роки тому

      @@kosko4703 Вечер добрый, опять я со своими наверное глупыми вопросами) Теперь у меня строка выглядит так: items = driver.find_element(By.XPATH, "//div[@data-marker='item-photo']") , а на выходе: 'WebElement' object is not subscriptable

    • @leonidasspartasson9759
      @leonidasspartasson9759 3 роки тому +1

      @@kosko4703 Отбой) Достаточно было поменять find_element на find_elementS

  • @MrTarasFin
    @MrTarasFin Рік тому

    Бро, спасибо за твою помощь.

    • @PythonToday
      @PythonToday  Рік тому +1

      Спасибо за поддержку бро!