Парсинг на Python, Selenium и BS4 | Выполняем заказ на фрилансе | Парсинг динамического сайта
HTML-код
- Опубликовано: 19 сен 2021
- Фриланс. Обучение (Web-Scraping) веб парсингу на Python. В данном видео выполняем заказ взятый на фрилансе по парсингу динамического сайта. Выполняем задачу с помощью библиотек Selenium, Beautifulsoup, requests, urllib и регулярных выражений. С записью данных в JSON файл.
🔥 Доступ в приват | Поддержать проект:
boosty.to/pythontoday
/ pythontoday
yoomoney.ru/to/410019570956160
🔥 Стать спонсором канала:
/ @pythontoday
****Ссылки****
Дешевый/надежный сервер в Европе + СКИДКА 10%:
vdsina.ru/?partner=858b36ud3p
Хороший proxy сервис:
proxy6.net/a/149995
Парсинг криптобиржи | Торговый бот | API криптобиржи:
• Парсинг криптобиржи | ...
Как отправить сообщение на почту с помощью Python | Email рассылка | Python send Gmail
• Как отправить сообщени...
Асинхронный парсинг на Python | Ускоряем код в 10 раз
• Асинхронный парсинг на...
Крутой заказ на фрилансе | Подбираем забытый пароль к Excel файлу с помощью Python:
• Крутой заказ на фрилан...
Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг):
• Пишем Telegram бота на...
Плейлист по распознаванию лиц на Python:
• Распознавание лиц | Fa...
Плейлист по парсингу сайтов на Python:
• Парсинг/Scraping
Версии Chromedriver:
chromedriver.storage.googleap...
Код проекта на github:
github.com/pythontoday/scrap_...
И в telegram канале:
t.me/python2day
****Соц.сети****
Telegram: t.me/python2day
#scraping #webscraping #парсинг #requests #python #фриланс #beautifulsoup #selenium
[INFO] актуальная инфа по данному уроку
Для тех у кого не получается проскролить, так как в конце скролла страницы, не появляется тег с сообщением о том, что дальше скролить некуда. Присмотритесь к тегу к которому мы перемещаемся для скролла. Внутри тега есть еще два тега, но при полном проскроливане страницы, эти теги исчезают. Ставьте условие не по наличию нового тега, а по отсутствию любого из внутренних двух. При таком условии весь код в блоке if из видео, переместится в блок else, аналогично для блока else из видео для блока if
+ Для внимательных перфекционистов. Не все карточки попадут в список карточек. Если просмотреть все карточки на странице с карточками, можно увидеть, что у некоторых слегка затемнен фон. Посмотрев на тег такой карточки, мы увидем, что в название класса добавляется дополнительное слово, что изменяет имя класса и означает что url к нам в список не попадет. Сами же карточки внутри не отличаются от остальных, не являются рекламными или повторяющимися (проверено), может они просто блатные какие то - хз. Для того чтобы они тоже попали к нам в список можно воспользоваться тем же compile() с названиями обеих карточек.
++ Для тех кто еще не работал с Selenium и вам не нравиться, что он ругается на вас(но все равно работает😎), за устаревшие методы как в видео.
Для создания драйвера можно использовать это 👇
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('ПУТЬ К ДРАЙВЕРУ\chromedriver.exe')
driver = webdriver.Chrome(service=service)
За место этого (как в видео)👇
from selenium import webdriver
driver = webdriver.Chrome('ПУТЬ К ДРАЙВЕРУ\chromedriver.exe')
А для поиска по классу можно использовать это 👇
driver.find_element(by=By.CLASS_NAME, value="catalog-button-showMore")
Предварительно импортируя это 👇
from selenium.webdriver.common.by import By
За место устаревшего поиска как в видео👇
driver.find_element_by_class_name("catalog-button-showMore")
+++ Для PythonToday. Ты красавчик большое спасибо❤
Ты красавчик тоже. Тебе спасибо
сразу же надо было читать комментарии я на это потратил уйму времени
Красавчик мужчина,от души
Спасибо за INFO , если не затруднит можешь подсказать в чем проблема :
find_more_element = driver.find_element(By.CLASS_NAME,"catalog-button-showMore")
затем идет блок кода где find_more_element должна прожаться и произойти догрузка контента :
actions = ActionChains(driver)
actions.move_to_element(find_more_element).perform()
но проблема в том , что кнопка не прожимается и цикл продалжает крутиться н непрожимая кнопку "показать еще"
Спасибо огромное за Ваш труд. Вчера закончил написание парсера группы в ВК и автоматической отправкой стат данных по постам в группе на почту нескольким сотрудникам. Все благодаря вашим урокам!! Настроение бомбическое, когда все получается!
Огроменное спасибо за твои труды, двигайся дальше. У тебя очень полезные видео. С помощью твоих видео люди сэкономят кучу времени и нервов!
Спасибо за поддержку!
Я хоть и джава программист, смотрю твои видосики и вообще начал изучать парсинг благодаря тебе. Спасибо за видео
Большое спасибо за качественный материал! Каждый урок пишу и "иду" по коду, чтобы все понять. Спасибо!
Спасибо за фидбэк! Рад что видео помогают
Все мы были нубами. Так что - спасибо, за то что делишься своими навыками. А еще это ж опыт!
Большое спасибо за фидбэк и поддержку!
Красиво, четко, лаконично и еще и работает!!!) Канал находка для меня, благодарю за такой качественный контент)
Большое спасибо за фидбэк! Рад что видео полезны и помогают!
Пушка контент, огонь канал, кот талисман)) Успехов в развитии брат, безумно благодарен за проделанную тобой работу и пинок лично для меня. Спасибо тебе большое!
Спасибо дружище) Рад что видео полезны
Спасибо огромное за труд! Твой канал это просто энциклопедия знаний, не слушай даунов, ты создаешь безумно полезный и нужный контент. Желаю двигаться только вперед, а мы поддержим 😉 Ты же знаешь)
Большое спасибо за фидбэк и поддержку! 👍
@@PythonToday а что это за ide?
@@brunneng8575 VSCode
@@user19326 Приветствую, авторского курса пока нет. Только веду несколько человек.
@@PythonToday Здравствуйте спасибо за туториалы, очень много нового узнал))!
Скажите а на селениуме можно парсить данные с карты на сайтах по недвижимости ?
Материал просто огонь! Спасибо за труды!;)
Спасибо большое за поддержку! Рад что полезно 👍
Просто лучший!! Без воды и отлично обьясняешь)
Большое спасибо! Рад что интересно и полезно)
🔥🔥🔥 Как всегда урок СУПЕР!!! Огромное спасибо!!! (я только-только начинаю самостоятельно изучать Python, пока на самом примитиве)
Благодарю! Рад что полезно и помогает. Главное ежедневно практикуйся
Нифига себе "если видео было вам полезным и вы узнали что-то новое", да это одно из лучших видео по парсингу, которое я видел, все чётко, подробно, конкретно!!!!
Ваще когда месяц назад наткнулся на твой канал, я был просто в восторге, ибо все просто и офигенно озвучено, без какого либо пафоса, конкретно и ясно, и более того очень точно и профессионально, смотрю более старые видосы, когда время есть...
Все супер, так держать, на днях в спонсоры на патреоне добавлюсь, очень полезные видео 👍🏻👍🏻👍🏻
Спасибо большое за фидбэк и поддержку!
@@PythonToday все, запатронился к тебе :)
Благодарю за видео. Толко обучился python, и уже такой бомбический канал, по Парсингу сайтов. Когда проходил задание на обучении этому, помогли Ваши уроки :).
Благодарю за фидбэк! Рад что видео помогают)
Огромное спасибо. Все просто и доходчиво! Без всякой "воды" и перескакивания !!!!
Огромное спасибо за фидбэк и поддержку!
Идея дать эксклюзивного контента практики удалась на ура. Я даже не думал что практики так не хватает во всяких контентах. Безумно благодарен.
Спасибо большое за видео! Очень доходчиво и полезно) хотелось бы ещё уроков на библиотеки, которые ты используешь, более подробно)
Спасибо большое за фидбэк! Рад что полезно
Огромное спасибо! Всегда с удовольствием слушаю и с удовольствием поддерживаю!
Большое спасибо за фидбэк и поддержку!
Как всегда пушка - огоньСмотришь и просто кайфуешь, кучу полезной инфы с каждым просмотренным видосом приобретаю
Спасибо за поддержку!
Спасибо за труд и за полезную информацию. Очень понятно объясняешь. Круто!
Большое спасибо за фидбэк! Рад что полезно
Интересные методы, спасибо, что поделился. Я не использую bs4 или что-то еще. Только встроенные методы самого Selenium. Скролю скриптом через driver.execure_script(), так как до конца список может грузиться и без всяких индикаторов в виде появляющегося блока. И там добавили уже manager service, чтобы не указывать место к webdriver-у явно, и качать его не нужно, он сам его качает.
Благодарю за фидбэк!
Спасибо за урок!
Буквально пару уроков назад по парсингу столкнулся с бесконечной прокруткой сайта, но так и не довел до ума автоматическую прокрутку через Selenium.
А тут она реализована.
Подправил свою по образу и подобию, все прекрасно заработало.
Рад что полезно! Большое спасибо за фидбэк!
Спасибо за видео! Очень вдохновляет!!!
Большое спасибо! Рад что полезно 👍
PythonToday
ДРУГ ты крут, спасибо тебе за хорошие видосы, ты даешь знания и вдохновляешь!
Большое спасибо за фидбэк!
Спасибо за видео. Очень пригодилось!
Манера объяснение темы на высшем уровне.☀️😇 как и всегда 😊 правда для того что бы вникать, хотя бы нужно знать основы питона. чего всем советую 😊 всем добра, автору здоровья и больше роликов 😅
Огромное спасибо за поддержку!
Очень полезное видео,
Узнал много нового .
Спасибо за подробное объяснение!
Большое спасибо за поддержку! Рад что полезно
Дружище, ты лучший! Спасибо за видео!
Большое спасибо за фидбэк!
Как всегда лайк! Молодец, приятно смотреть!!!
Большое спасибо за поддержку!
2:35 библиокеки! 🤣🤣🤣🤣🤣! PythonToday спс за контент, постоянно очень жду новые видео!:)
Теперь ждём на асинцио☺️💃
А работа проделана большая! Ставим класс 👍
Спасибо за фидбэк!
Огромное спасибо. Материал бомба!!!
Большое спасибо за фидбэк! Рад что полезно и интересно
Я человек простой, вижу Ваше видео - ставлю нравку!
Большое спасибо за поддержку!
Спасибо за контент))
Очень хорошо рассказываешь!
Благодарю за фидбэк!
За видео респект. Особенно понравился генератор списков, приятно удивился😉
Спасибо за фидбэк! Рад что видео помогают)
Совет: Не стоит использовать time.sleep(n) для ожидания прогрузки страницы или элемента, куда разумнее использовать explicit waits.
В данном случае можт это и сработает нормально, но в случае с selenium использование time.sleep() - моветон
Сайт затупит, инет затупит. Слип пройдет и пизда проге. Так что верный совет
Очень круто , спасибо!
Благодарю за фидбэк!
Паршу сайты поставщиков для своего дела, нашел в твоем коде красивые вещи, которые буду применять у себя. Продолжай в том же духе, ты красавчик!
Большое спасибо за фидбэк! Рад что полезно)
Отличный урок, спасибо !
Благодарю за фидбэк!
Спасибо большое за видео, было очень полезно и познавательно. Но пришлось основательно переписывать скрипт, так как поменялись методы в библиотеках, теги на сайте и много всего еще прочего!
Ждемс вторую часть заказа с помещением данных в бд)
Идеальный формат!
Благодарю! Рад что интересно и полезно
Обожаю такие видосы.
Молодчага!!! Спасибо за ролик!!!! Познавательно! Лайк!
Спасибо большое за поддержку!
Спасибо тебе огромное за труд. Много чему научился благодаря тебе. Желаю удачи! И вопрос: а ты для парсинга используешь scrappy?
Большое спасибо за фидбэк! Рад что видео помогают. Использовал scrappy только в нескольких простых проектах.
*Спасибо тебе большое, очень нравится питон и по твоим урокам обучение ускоряется в несколько раз, оху#**#ный** ты мужик!!!*
Большое спасибо за фидбэк! Рад что полезно
супер! Спасибо, очень познавательно!
Большое спасибо!
Ого!)
Ви молодець!)
Дякую вам!)
Благодарю за поддержку!
спасибо огромное , очень полезное видео , самый лучший Питон блоггер
Благодарю!
"... я только учусь, и делюсь практикой, которой мне так не хватало, с менее опытными подписчиками..." Уважаемый! Боюсь представить уровень Вашей компетенции, когда Вы закончите обучение.
В программировании нельзя закончить обучение)
Спасибо за топовый контент!👍👍
Большое спасибо за фидбэк! Рад что полезно
Просто офигенно!
Благодарю!
Огонь!!
вместо переменной "count" можно использовать функцию enumerate() на цикл фор. выглядит это примерно так:
list = ['a', 'b', 'c']
for i, el in enumerate(list):
print(i, el) # 0 a, 1 b, 2 c
Очень интересное видео, спасибо.
Большое спасибо за фидбэк!
Классный урок!
Благодарю!
Туториал как обойтись без селиниума)
Привет! Сайт действительно крутой со стороны обучения.
Однако ты прав что можно обойтись без селиума если посидеть.
Кароче тут подгружается страница вариантов POST запроса, JS кода а в ссылке самого запроса есть номера страниц, полученный код кидаем в формат json и вуаля.
У тебя новая подгружаемая страница.
Учитывая что я учусь requests по твоим видео, спасибо!
Классное видео, спасибо!
Благодарю за фидбэк!
6:23 - если правильно понял, элемент будет тогда и только тогда, когда загрузка полностью окончена. Правильно тебя понял?
Смотри, у selenium есть инструмент explicit wait, он как раз для этого.
Поищи в доках на селен, так вот, задай хоть час, но скрипт продолжить работу в то время и только в то, как элемент будет обнаружен.
Юзается BY, можно выставить, что удобно, в примере xpath, его и юзаю и на вэб, мобилках (юзал).
Видео класс, люблю только selenium, bs4 нет, но без requests никуда, факт.
Как всегда, лучший!
Благодарю!
Отличный урок, что сказать
Большое спасибо!
Спасибо вам огромнейшее!!!
Спасибо за фидбэк!
Полностью поддерживаю !!!!! Zer0
Огонь!)
Не без проблем, но все получилось. Спасибо !
Спасибо за фидбэк! Рад что полезно!
в очередной раз спасибо за труд и материал для практики)))
похоже админы сайта учли свои ошибки и немного его реконструировали, поэтому например: поле сайта клиники и соц сетелей на страницах компаний, теперь лежат каждый в своем теге под отдельным названием и добраться до них стало куда проще))
По ходу написания, заодно попрактиковался в grequests, пропустив через нее итоговую функцию обработки списка собранных ссылок (очень уж понравился мне этот модуль, своей простотой и эффективностью) и получилось даже лучше чем изначально предполагал)) без пауз между запросами скрипт отработал всего за 45 секунд (обработал 243 позиции))
Только 1 раз уже перед финальным сбором уже всей инфы, когда проверял как укладываются все поля в json на срезе из 5 клиник, и ничего ли не пропустил, и не напутал, угодил в капчу. Для пробы просто прошел ее на сайте руками, после чего, перезапустил скрипт и все сработало как часы)))
Спасибо за фидбэк!
огромное спасибо!!
Ты красавчик! Спасибо тебе
Спасибо за поддержку!
Просто пушка ))
Большое спасибо!
круто, спасибо
Большое спасибо за фидбэк!
Что бы без тебя а. Продолжай я Junior по Python у с твоих видео я понял на сколько полезен Парсинг и как его легко делать. Ну да чуть чуть пока хромую по Парсингу но надеюсь твоих видео я обучусь этому лучше. Продолжай без тебя мы бы Яша читали бы инструкцию 🤦🏿♂️ Хорошо что ты снимаешь Спасибо тебе за труд 👍🏻
Спасибо большое за фидбэк! Рад видео полезны и помогают
по больше бы видео по парсингу сайтов
Да вроде итак самый большой плейлист на ютубе 😀
Я летом начал изучать питон. И только сегодня получил рекомендацию на твои видосы. С первых слов подача цепляет, штош, похоже я здесь залипну)) Лайк, подписка и всё такое! спасибо)
Большое спасибо за фидбэк! Надеюсь видео будут полезны)
Хорошая тема!
Благодарю за фидбэк, рад что интересно и полезно!
Супер!!!
Спасибо!
Начинаем😍
Спасибо за поддержку! )
Нетривиальный сайт, действительно весьма поучительный. Впрочем в моей практике самым сложным было иметь дело с обфускаторами и гугл капчей.
Это просто вау
Спасибо большое! Рад что интересно
Отлично!
Спасибо!
Спасибо все классно
Благодарю, рад что полезно!
Круть )))))
Благодарю!
Спасибо за видео! Сделай пжл про парсинг статичных страниц, если они автоматом не подгруждаются и надо ручками странички менять - очень сейчас такая задачка нужная для решения)
Покажи пример такой страницы?
Классное видео, спасибо! А на какой бирже получил этот заказ? И вообще куда лучше идти за фрилансом?
Благодарю за фидбэк! Сейчас только сарафанное и старые заказчики, раньше сидел на всех upwork, freelancer, habr, fl, kwork
коммент в поддержку!!
коммент в поддержку!!
коммент в поддержку!!
Спасибо!
Здраствуйте, нравятся ваши видео, но заметил особенность, в вашем коде при использовании selenium всегда нужен вебдрайвер, что не очень удобно. Советую вам использовать undetected_chromedriver . Вебдрайвер не нужен, да и по названию понятно, что оно может еще делать
спасибо за урок, а можно ли как-то ускорить парсинг данных, чтобы эти 232 итерации за очень малое время перебрать ?
мастерски 👍👍
Спасибо, но только учусь)
@@PythonToday скромность украшает!
Когда за 30 мин узнал больше чем за 2 онлайн курса
Спасибо большое за фидбэк! Рад что полезно)
Держи мой жирный лайк!!!
Спасибо за поддержку!
Приятель, у меня такой вопрос - Я понимаю смысл строки "if __name__ = '__main__' ", но не понимаю зачем его использовать всегда, то есть это делается с загвосткой что ты можешь когда нибудь запустить этот код как стороннюю библиотеку?
Видео старео, но буду крайне рад если ответишь!
PythonToday: нужно сделать многопоточный парсинг
Спасибо большое за урок по парсингу, можешь подсказать, как находить div, если название класса постоянно меняется, заранее спасибо
Дружище, с прошлой твоей тренировки по selenium, у меня остался скачанный драйвер для Firefox. Попробовал сюда его подключить вместо драйвера Google, но ничего не получилось, прокрутка не запускалась. Бился 2 дня. Потом (как в этом видео) скачал и запустил драйвер Google. Сразу все получилось! Почему так?
Super спасибо
Благодарю за фидбэк!
Автор Профи!
Подскажите, пожалуйста, как спарсить таблицу целиком с сайта и записать её в хlsх файл при этом транспонируя весь первый столбец в шапку документа?
Можно ли более подробно рассказать про WebDriverManager?
Годно!
Спасибо!
@@PythonToday Спасибо что ответил❤️
Спасибо! А теперь давайте что-нибудь немного посложнее - например пободаемся c Instagram в плане парсинга)
Спарсить можно что угодно. Даже если придётся для этого делать скрин шот и распознавать в нужном секторе текст))
насчет 30 долоров это конечно круто
Привет, почему executable_path может подсвечиваться жёлтым? Программа на нем ломается