Спасибо Вам за труд, очень много ценной информации на канале! Хотел бы поделиться информацией по поводу ожиданий в селениуме. Можно использовать неявные ожидания как в этом видео с использованием driver.implicitly_wait(sec), но в таком случае достаточно вызвать данный метод только один раз(!) и тогда для каждого метода WebDriver'a будет выполняться это неявное ожидание. Но также можно выбрать явное ожидание, указывая в каждом методе WebDriverWait(driver, sec).until(EC.condition(By.XREF, 'xref_of_element)) в таком случае драйвер будет ожидать только конкретный случай, и для каждого события придется прописывать такое условие. Надеюсь этот пост будет полезен!
Я сделал подобное но в bs4, сначала собрал линки кардов потом добавил их в set() потом прошелся по каждой ссылке и сорал данные, мне ваша идея понравилась но помне это трудновато, но я научился спасибо за контент, щас selenium немного изменился и код пришлось немного исправить я справился спасибо вам
for x in reversed(range(len(browser.window_handles))): browser.switch_to.window(browser.window_handles[x]) цикл помогает прыгать дальше по страницам без лишнего кода:)
Спасибо за очередное отличное видео, жду выпуски с нетерпением, каждый раз беру для себя какие-то новые фичи спасибо, очень хотелось бы увидеть ещё видео капчу на сайтах , и ещё про то как красиво настроить интерфейс pycharm
*Видео как всегда полезное, но контента малова-то как по мне.* Думаю, можно было бы разнообразить чуть-чуть, как пример это вывести все в json по типу: Имя, название, активность юзера, ссылка. Ну и ещё проблема возникает, при частых запросах на авито с одного ip банит ссесию. Очевидно решаемая проблема добавлением списка прокси, но как пример для видео, думаю было бы полезным для некоторых)
Привет! Спасибо за полезную информацию! Если у кого селен ругается на driver.find_element......., то это изменился синтаксис в самой библиотеке, но и со старым методом работает)
@@АндрейИванов-д5к driver.find_elements(By.XPATH, "//div[@data-marker='item-photo']") так должно быть? или driver.find_element(By.CLASS_NAME, "seller-info-name")? или я не ту документацию смотрю?
Очень круто, но я так думаю, что это может привести к большому количеству запросов к целевому серверу и он может за это блокернуть, если не использовать прокси
Добрый день, не могу подцепиться к имени пользователя в авито объявлении они изменили код, можете подсказать, какой класс или xpass, взять у какого элемента?
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)
Привет!! Видео супер! Смотрятся с огромным интересом. А можешь записать видео по сохранению файлов в выбранную дирректорию и как ее изменять в сессии при необходимости.?
Привет, спасибо за фидбэк. Сохранение файлов с туториалом по Selenium не очень клеится. В плейлисте по парсингу и в инстаграм боте мы качали и сохраняли файлы много раз. Посмотри. А так работу с файлами когда-нибудь опишу в плейлисте по изучению Python для новичков. Просто не хватает времени.
@@PythonToday я предыдущие видео смотрел. Там все понятно. В селениум же запускается браузет и у него есть директория по дефалту для загрузки файлов. Вопрос и помощь в том как устанавливать другой путь для загруки файлов и его изменять во время уже запущенного webdriver., когда на странице есть кнопка сохранить или скачать а файлы распределить по разным директориям. Спасибо заранее!!
Спасибо за твои уроки! Я прошу прощения, но у меня вопрос есть - можно ли в селениум загружать фото на сайт? Например аватарки, профиля в соцсетях заполнять? Прошу прощения за косноязычность)
Спасибо за фидбэк. Конечно можно, это ведь полноценное управление браузером. В одном из видео с instagram ботом, мы рассматривали этот момент. Т.е как можно прикрепить фото к форме отправки сообщений. Было это в видео по отправке сообщений в директ.
Как отследить активность нескольких определенных пользователей. Проблема в том что нужен вход в авито, чтоб объявления стали видны. вебдрайвер не пускает авито. Как это сделать?
Ну если элементов несколько с одним и тем же классом например, и тебе надо выбрать второй, то можно выбрать его при помощи :nth-child(номер по счёту). хз передаст ли ютуб ссылку, но вот: stepik.org/lesson/102555/step/7?unit=196193
А как сделать так, чтобы он заходил по ссылке и выходил, но без написания кода для каждой страницы. Вдруг, у меня 200к ссылок. Можно ли по циклу это сделать? И есть да,то как?
Спасибо. То что искал. Если сайт тормознутый и грузится не равномерно, то думаю слип не сработает и мы получим, что элемент не найден или что то в этом роде, тогда как в этом случае быть?
Я извиняюсь за возможно глупый вопрос, но сам его не могу решить. Вот есть item[0], item[1] и тд..наши карточки товаров. Есть количество этих элементов на странице и есть определенное количество страниц. Можете, пожалуйста, подсказать код как проделать функцию click с каждым элементом на странице и затем постранично. Пытался целый день разобраться, так и не смог. Заранее спасибо!
Я бы сначала собрал пагинацию, например 12 страниц. Затем запустил цикл от 1-12 в котором собирал бы все ссылки на карточки. Затем записал ссылки в файл и уже читая из него ссылки заходил бы на каждую. Можно обойтись и без записи, сразу заходить на каждую карточку в цикле пагинации.
Может кто подсказать? Не получается спарсить данные с страницы авито, делаю так как на видео, а пишет: Message: no such element: Unable to locate element: {"method":"css selector","selector":".item-view-content"} при driver.find_element(By.CLASS_NAME, "item-view-content") хотя такой класс точно есть
Спасибо. У меня была проблема что я использовал driver.find_element. Я уже искать начал в чём проблема, почему не находит все элементы в виде списка 🤣🤣
Selenium немного поменял метод. Получается в твоём случае: items=driver.find_element((By.XPATH, "//div[@data-marker='item-photo']")). Примерно так если не ошибся
items = driver.find_element_by_xpath("//div[@data-marker='item-photo']") items[0].click() ругается и не нажимает клик. TypeError: 'WebElement' object is not subscriptable
@@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).
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 Вечер добрый, опять я со своими наверное глупыми вопросами) Теперь у меня строка выглядит так: items = driver.find_element(By.XPATH, "//div[@data-marker='item-photo']") , а на выходе: 'WebElement' object is not subscriptable
Спасибо Вам за труд, очень много ценной информации на канале!
Хотел бы поделиться информацией по поводу ожиданий в селениуме. Можно использовать неявные ожидания как в этом видео с использованием driver.implicitly_wait(sec), но в таком случае достаточно вызвать данный метод только один раз(!) и тогда для каждого метода WebDriver'a будет выполняться это неявное ожидание. Но также можно выбрать явное ожидание, указывая в каждом методе WebDriverWait(driver, sec).until(EC.condition(By.XREF, 'xref_of_element)) в таком случае драйвер будет ожидать только конкретный случай, и для каждого события придется прописывать такое условие.
Надеюсь этот пост будет полезен!
Спасибо большое за фидбэк!
Тоже заметил странность) Собственно, implicitly_wait() - это как установка общего таймаута для driver.find_element-подобных запросов. Спасибо за инфу.
Уроки супер. Подписка.
Асинхронности не хватает для запуска одновременного парсинга нескольких сайтов.
Я сделал подобное но в bs4, сначала собрал линки кардов потом добавил их в set() потом прошелся по каждой ссылке и сорал данные, мне ваша идея понравилась но помне это трудновато, но я научился спасибо за контент, щас selenium немного изменился и код пришлось немного исправить я справился спасибо вам
Четко рассказываешь, давай больше видео по Selenium
Благодарю за фидбэк
Просто коммент. Не ожидал что селениум такая полезная вещь
Благодарю за фидбэк и поддержку! Рад что видео помогают
for x in reversed(range(len(browser.window_handles))):
browser.switch_to.window(browser.window_handles[x])
цикл помогает прыгать дальше по страницам без лишнего кода:)
Спасибо за очередное отличное видео, жду выпуски с нетерпением, каждый раз беру для себя какие-то новые фичи спасибо, очень хотелось бы увидеть ещё видео капчу на сайтах , и ещё про то как красиво настроить интерфейс pycharm
Благодарю 💪 По капче видео выкладывать не буду, есть темы которые лучше не трогать на ютубе
@@PythonToday да , точно , не подумал об этом , но все равно спасибо шаг за шагом иду по твоим видео , очень многому научился спасибо !!
Отличные видео ,ждем продолжение ,такого контента мало по selenium :(
Спасибо за фидбэк 💪
Опять крутой видос, спасибо
Благодарю 💪
Спасибо большое за видео, как всегда узнал что то новое. Теперь жду видео с явными ожиданиями, так как сам не смог разобраться :D
Благодарю 💪
Мое почтение, все очень круто. Спасибо большое! Здоровья
Благодарю за фидбэк) Взаимно!
*Видео как всегда полезное, но контента малова-то как по мне.*
Думаю, можно было бы разнообразить чуть-чуть, как пример это вывести все в json по типу: Имя, название, активность юзера, ссылка.
Ну и ещё проблема возникает, при частых запросах на авито с одного ip банит ссесию. Очевидно решаемая проблема добавлением списка прокси, но как пример для видео, думаю было бы полезным для некоторых)
Одобряю, можно ещё добавить, как это все записать в файл))
огромное спасибо за туториал)
спасибо большое за такие подробные видеоуроки, надеюсь будут видео с заказов фриланса, где ты используешь selenium
Благодарю за фидбэк
Спасибо, помог, быстро и по существу
Благодарю за фидбэк, рад что полезно
Круто, спасибо!
Благодарю 💪
Привет! Спасибо за полезную информацию!
Если у кого селен ругается на driver.find_element......., то это изменился синтаксис в самой библиотеке, но и со старым методом работает)
привет. А где новый синтаксис найти на него? чтобы не ругался, и так работает, но интересно посмотреть новый синтаксис.
@@МуратСултанов-о7б Привет, на сайте селениума, там вся документация есть.
@@АндрейИванов-д5к driver.find_elements(By.XPATH, "//div[@data-marker='item-photo']") так должно быть? или driver.find_element(By.CLASS_NAME, "seller-info-name")? или я не ту документацию смотрю?
@@МуратСултанов-о7б Да, всё верно. Синтаксис проще стал, но это моё мнение.
@@АндрейИванов-д5к name 'By' is not defined - PyCharm у меня такое пишет, когда запускаю с новым синтаксисом
полезное видео, хочу попробовать спарсить несколько разделов с товарами, через селениум
Спасибо за ролики)
Благодарю за фидбэк 👍
Очень круто, но я так думаю, что это может привести к большому количеству запросов к целевому серверу и он может за это блокернуть, если не использовать прокси
Добрый день, не могу подцепиться к имени пользователя в авито объявлении они изменили код, можете подсказать, какой класс или xpass, взять у какого элемента?
Привет, хотелось бы видео про Ожидания(Wait) в Selenium. Благодарю
Круто
keep up the good work❤❤
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)
Спасибо)
Благодарю за фидбэк 👍
👍👍👍👍👍👍👍👍👍👍👍👍
Даёшь парсинг 2gis и яндекс карт!
Пытаюсь пройтись по всем объявлениям на странице, авито блокирует по ip. Надеюсь будет в дальнейших видео
Круто. Жду парсинг номеров из авито :)
Привет!! Видео супер! Смотрятся с огромным интересом. А можешь записать видео по сохранению файлов в выбранную дирректорию и как ее изменять в сессии при необходимости.?
Привет, спасибо за фидбэк. Сохранение файлов с туториалом по Selenium не очень клеится. В плейлисте по парсингу и в инстаграм боте мы качали и сохраняли файлы много раз. Посмотри. А так работу с файлами когда-нибудь опишу в плейлисте по изучению Python для новичков. Просто не хватает времени.
@@PythonToday я предыдущие видео смотрел. Там все понятно. В селениум же запускается браузет и у него есть директория по дефалту для загрузки файлов. Вопрос и помощь в том как устанавливать другой путь для загруки файлов и его изменять во время уже запущенного webdriver., когда на странице есть кнопка сохранить или скачать а файлы распределить по разным директориям. Спасибо заранее!!
Спасибо за твои уроки! Я прошу прощения, но у меня вопрос есть - можно ли в селениум загружать фото на сайт? Например аватарки, профиля в соцсетях заполнять? Прошу прощения за косноязычность)
Спасибо за фидбэк. Конечно можно, это ведь полноценное управление браузером. В одном из видео с instagram ботом, мы рассматривали этот момент. Т.е как можно прикрепить фото к форме отправки сообщений. Было это в видео по отправке сообщений в директ.
@@PythonToday Спасибо большое!!!
Открывай лайкоприемник, сейчас отгружать буду)
Как отследить активность нескольких определенных пользователей. Проблема в том что нужен вход в авито, чтоб объявления стали видны. вебдрайвер не пускает авито. Как это сделать?
Пожалуйста снимите видео ,как закинуть selenium бота в хостинг ,а то не получается и информаци только для Linux (
Почему не взять элемент, но с уже :nth-child(2)? А через элементы и выбираешь уже с них нужный тебе элемент с классом?
Не понял тебя. Поясни.
Ну если элементов несколько с одним и тем же классом например, и тебе надо выбрать второй, то можно выбрать его при помощи :nth-child(номер по счёту).
хз передаст ли ютуб ссылку, но вот:
stepik.org/lesson/102555/step/7?unit=196193
Правда это ошмётки информации.
А как узнать какие параметры есть у функции find_element_by_class_name? Есть что-то еще помимо click() и если есть, где найти список это?
А документация для чего? Либо в IDE зажми ctrl в pycharm и нажми на любой метод или класс, получишь описание.
а есть ли возможность парсить сайт асинхронно ?
а как переключаться между страницами?чтобы парсить уже со второй страницы и тд
А как переключится на вкладку с историей браузера и сделать с нее скрин?
Что скажешь про паппетир?
Он заменит селениум?
Не работал с этой библиотекой
А как сделать так, чтобы он заходил по ссылке и выходил, но без написания кода для каждой страницы. Вдруг, у меня 200к ссылок. Можно ли по циклу это сделать? И есть да,то как?
Спасибо. То что искал. Если сайт тормознутый и грузится не равномерно, то думаю слип не сработает и мы получим, что элемент не найден или что то в этом роде, тогда как в этом случае быть?
Писать try/except и обрабатывать любое место где возможна ошибка.
Можно его как-то в своем браузере открыть, а не в том, который открывает он сам. Это мне нужно чтобы не авторизироваться постоянно
Угар, я у того челика с обьявы видеокарты брал xD
А на гет пост можно парсить авито?)
Можно
Я извиняюсь за возможно глупый вопрос, но сам его не могу решить. Вот есть item[0], item[1] и тд..наши карточки товаров. Есть количество этих элементов на странице и есть определенное количество страниц. Можете, пожалуйста, подсказать код как проделать функцию click с каждым элементом на странице и затем постранично. Пытался целый день разобраться, так и не смог. Заранее спасибо!
Я бы сначала собрал пагинацию, например 12 страниц. Затем запустил цикл от 1-12 в котором собирал бы все ссылки на карточки. Затем записал ссылки в файл и уже читая из него ссылки заходил бы на каждую. Можно обойтись и без записи, сразу заходить на каждую карточку в цикле пагинации.
@@PythonToday спасибо за ответ! И за ваши уроки! Учусь по ним
💪
Может кто подсказать? Не получается спарсить данные с страницы авито, делаю так как на видео, а пишет: Message: no such element: Unable to locate element: {"method":"css selector","selector":".item-view-content"} при driver.find_element(By.CLASS_NAME, "item-view-content") хотя такой класс точно есть
Жаль что нельзя перейти на всплывающее окно внутри нулевого окна , которая содержит хтмл другого сайта(
Вот все равно не понимаю , для чего это? Это как бы личная автоматизация браузера?
Почитай например про тестирование сайтов, ну и конечно отличный инструмент для скрапинга/парсинга
не могу сообразить, цену то как стянуть((
как только написал - сразу дошло)
Спасибо за крутые уроки!
Большое спасибо за фидбэк! Молодцом что сам разобрался, лучший опыт
Бл два дня сидел думал чо вторую вкладку не открывает. XPATH я скопировал вставил и дописал item((( надо было просто все див блоки брать
О дизлайков за пол года, похвально)))
Спасибо, рад что полезно
Может пригодится кому :)
items=driver.find_elements(By.XPATH,"//div[@data-marker='item-photo']")
items[0].click()
Спасибо. У меня была проблема что я использовал driver.find_element. Я уже искать начал в чём проблема, почему не находит все элементы в виде списка
🤣🤣
"xpath"
Добрый день! У меня в 22 году этот метод не работает от слова совсем.
items = driver.find_element_by_xpath("//div[@data-marker='item-photo']")
может потому что изменили маркеры?
Selenium немного поменял метод. Получается в твоём случае: items=driver.find_element((By.XPATH, "//div[@data-marker='item-photo']")). Примерно так если не ошибся
items = driver.find_element_by_xpath("//div[@data-marker='item-photo']")
items[0].click()
ругается и не нажимает клик.
TypeError: 'WebElement' object is not subscriptable
Такая же проблема
@@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).
cейчас таких методов вроде нет больше в селениум: ind_element_by_xpath
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']"}
Через инспектор уже тоже не ищет эти элементы =(
method deprecated/устарел find_element('by', 'any')
@@kosko4703 Спасибо за подсказку. Но при использовании find_element тоже ошибка: Message: invalid argument: invalid locator
@@leonidasspartasson9759 неверный locator, т.е. первый аргумент локатор - 'xpath'
@@kosko4703 Вечер добрый, опять я со своими наверное глупыми вопросами) Теперь у меня строка выглядит так: items = driver.find_element(By.XPATH, "//div[@data-marker='item-photo']") , а на выходе: 'WebElement' object is not subscriptable
@@kosko4703 Отбой) Достаточно было поменять find_element на find_elementS
Бро, спасибо за твою помощь.
Спасибо за поддержку бро!