Обучение парсингу на Python #6 | Как собрать информацию с любого сайта | Requests BS4 Selenium
Vložit
- čas přidán 27. 03. 2021
- Обучение (Web-Scraping) веб парсингу на Python. В данном видео рассматриваем как и откуда подгружается контент на динамический сайт, используем библиотеку requests и GET запросы к API, парсим данные с помощью Beautifulsoup, а также рассматриваем как можно получить данные и сохранить страницу с помощью Selenium webdriver.
🔥 Доступ в приват | Поддержать проект:
boosty.to/pythontoday
/ pythontoday
yoomoney.ru/to/410019570956160
🔥 Стать спонсором канала:
/ @pythontoday
****Ссылки****
Музыка из видео:
www.epidemicsound.com/referra...
Дешевый/надежный сервер в Европе:
zomro.com/?from=246874
promo_code:
zomro_246874
Хороший proxy сервис:
proxy6.net/a/149995
Крутой заказ на фрилансе | Подбираем забытый пароль к Excel файлу с помощью Python
• Крутой заказ на фрилан...
Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг):
• Пишем Telegram бота на...
Плейлист по парсингу сайтов на Python:
• Парсинг/Scraping
Плейлист по Instagram боту:
• Instagram Bot на Pytho...
Firefox driver:
github.com/mozilla/geckodrive...
Chrome driver:
chromedriver.storage.googleap...
Код проекта на github:
github.com/pythontoday/scrap_...
И в telegram канале:
t.me/python2day
****Соц.сети****
Telegram: t.me/python2day
Дуже цікаво і практичні приклади. Молодець. Почну вивчати програмування по Ваших прикладах, практичний досвід реальний. Дякую!!!!!!!!!!!!
Спасибо большое за такой отличный контент 👌👍 Благодаря ему втянулся в тему парсинга и сейчас работаю над своим первым проектом в этом направлении. Хотелось бы ещё отдельное видео, посвящённое теме заполнения форм на сайте с использованием requests. Спасибо 🤝
Спасибо. Для меня вы гений.
Я уже 7 месяцев учу Питон (и в целом програмирования и линукс). Спасибо за качественые видео!
Блогодаря таким людям как вы, новичкам легче учить!
Буду дальше учить.
Удачи и вам!!!
Благодарю за фидбэк! Но я только учусь как и ты)
Как успехи спустя столько времени?
@@work_user1510 Уже к лучшему. На степике сейчас делаю курсы. Там очень качественные курсы.
@@return_1101 чё там с прогрессом ?
Спасибо большое за видео!!! Ваши видео просто офигенны! Немного теории + море практики + дополнительная инфа для конкретных задач, которые в будущем может встретить любой парсер
P.S. Во время учёбы у меня возникло 2 ошибки и может, кому пригодиться мой опыт, ну-с начнём.
Первая ошибка: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
Если хотите посмотреть решение в инете вбейте эту ошибку в поисковик и перейдите по первой ссылке. Лично мне, помог совет от пользователя Мори опубликованный 08.11.2021.
В чём суть ошибки? Просто библиотека обновилась и параметр, который я использовал executable_path устарел.
Решил ошибку так: driver = webdriver.Firefox(
options=options,
service=Service("C:/Users/N/PycharmProjects/Парсер сайтов/Lesson7/geckodriver"))
Заменил устаревший параметр на объект типа Service()
Вторая ошибка: 'charmap' codec can't encode character '\u25b9' in position 7943: character maps to
Нашёл ответы в инете, но они оказались не для новичка, как я. Да и решения ошибки были основаны на объёмненьком коде, что мне не понравилось. Поэтому начал решать проблему сам. Вспомнил, что такая же ошибка встречалась в каком-то прошлом уроке из плейлиста.
Решил ошибку так:
with open("index_selenium.html", "w", encoding='utf-8') as file:
file.write(driver.page_source)
Добавил в параметры записи кодировку utf-8.
P.P.S Комментарии удалились во время печати, поэтому пришлось дважды писать одно и тоже :(
Вернулся в данный плейлист после краткого ознакомления с selenium. Летим дальше! Спасибо Автору!
Благодарю!
Братишка ты просто Красавчек, мотал я душу гугловским алгоритмам, как я долго тебя искал ....... Четко и по делу !!!!!!! Не бросай это дело
Благодарю 💪
Котан снова в деле 😀👍 Спасибо тебе за практику! Аналогов не сыскать. з.ы, не думал постримить, пообщаться "вживую"? Думаю много кто подключится.
Спасибо за фидбэк! Думал, но всё никак не решусь. Надо уделить час и разобраться как стрим работает. Да и 200% все про программирование будут спрашивать, а хотелось бы обо всем) Может на 10к соберемся 😀
@@PythonToday яб тоже подтянулся было бы прикольно! котэ +1
@@PythonToday я в деле босс.
@@PythonToday уже 100+ к 😃 Когда сбор?))
Спасибо за очень полезный и структурированный контент! После ваших видео не остается ни одного вопроса, а появляется желание открыть атом и начинать писать код :) Хотелось бы увидеть видео о сборе спарсенной инфы в бд (например, sqlite). Столкнулась с проблемой засовования вложенных словарей причем разной структуры и перелопатив интернет ничего годного не нашла. Благодарю за ваш труд!
Как всегда на высоте! Больше видео про парсинг богу видео про парсинг! :)
Спасибо за фидбэк!
Ты бы знал как я рад, чуть стул не сломал во время прыжка на радостях XD Спасибо огромное!!!
Опа, оказывается в Python есть библиотека эмулирующая работу браузера. Познавательно, полезно, прекрасно. Благодарю за ценное видео.
Благодарю за фидбэк! Рад что видео полезны)
Спасибо за видео! Пойду просматривать плейлист по selenium.
Рад что полезно, спасибо за фидбэк!
Спасибо, не хватало этого.
Спасибо тебе. Ты очень доступно объясняешь !!!
Благодарю!
за котяру отдельный лайк =)
Хороший контент. Благодарю. Интересно и информативно.
Большое спасибо!
Как всегда супер видео!
Спасибо!
Спасибо большующее! Продолжай делать такие разборы - очень сильно прокачивают нас. Хотелось бы увидеть ролик, где чтобы получить необходимые данные, надо сначала что-то заполнить в input или select, и только после этого появляется страница, которую надо спарсить
Благодарю за фидбэк!
Спасибо, шикарно, мне этого не хватало
Благодарю
Огромное спасибо за ваш труд! Это лучший контент. Мне 41 и я решил обучиться программированию для воплощения своих идей в программы которые помогут мне работать с финансами и активами. Но для того, что бы это воплотить я должен понять как всё это работает! Очень много для меня новой, неизведанной информации которая удивляет и завораживает. Изучать новое и не понятное для меня, одно удовольствие. Читать книги это важно, но без практики и хорошего человека который объяснит как это работает очень сложно. Очень много вопросов как это всё работает и всегда хочу находить ответы. Ваш контент отвечает не на все мои вопросы но помогает обрести понимание и самое главное навыки. Благодарю еще раз за ваш труд. Не бросайте это дело так как мало Русского контента который помогает новичкам обрести понимание да и не только новичкам. Да и огромный потенциал в этом направлении как для вас так и для нас.
это вам надо в сторону датасаенс смотреть (jupyter notebook), если ремесло программиста для вас не главное, то на программировании вы только время потеряете
Большое спасибо за фидбэк) Меня как и вас, программирование привлекает безграничным потенциалом возможностей. Успехов в изучении 💪
Отличнейший контент! Спасибо тебе большое!
Спасибо за поддержку!
спасибо.здорово.было бы интересно посмотреть ролик,где больше активных действий типа click, onclick, onmouse. а так же парсинг через selenium shadow dom. или же парсинг json
Очень здорово! Спасибо Вам!
Благодарю за фидбэк!
Только залетел))) и уже лайк и подписка!
Спасибо!
Коротко и ясно. Спасибо.
Благодарю!
Очень клёво)) Есть наработки по парсингу у меня но это тоже очень полезно)
Спасибо за фидбэк!
Все шикардосно и полезно, не могу понять людей которые дизы ставят, больше чем на 100% уверен что это те которые сами ни чего делать не могут.
Благодарю 👍
это паходу двоешники дизят
Спасибо тебе огромное)))
Видео супер)
Благодарю 💪
Вау! Просто вау! Буду тестить данный метод с сайтом Zillow который уже сломал мне мозг )) обожаю этот канал!
Большое спасибо за поддержку!
Спасибо за урок)
Спасибо, очень интересно и полезно.
Спасибо за фидбэк, рад что помогает!
Благодарю за урок
Сегодня такое как раз было, столкнулся с невидимыми див блоками
Спасибо уважаемому автору! Идея для будущего урока: Парсинг и сохранение видео-стримов и данных в формате blob:http
Всё круто! Спасибо за видео, только у меня вопрос, а нужно ли ставить слип после get запроса на страницу в селениуме? Как я понял запрос сам по умолчанию ждет когда страница прогрузиться, или я ошибаюсь?
кошак просто стал символом канала. Крутой кошара
Спасибо))
Видео полезно...👍
Автор подскажи варианты пожалуйста тессеракт или опенСиВи для распознование текстовый картинок?? (Для капчу, мне скорость распознование очень важно)
Спасибо большое, с первым методом у меня не получилось, когда я переходил по ссылкам сайт меня перенаправлял на главную страницу, а вот со вторым метод все отлично, спасибо за такой контент
Спасибо за фидбэк!
Спасибо! Полезно!
Благодарю за фидбэк!
После просмотра видео пошел и залпом просмотрел плейлист по Selenium, и если я правильно понял, он больше служит для автоматизации работы с браузером, ну и для тестов где требуется имитировать нажатия клавиш и взаимодействея с различными элементами на странице.
При этом, хоть часть его функционала и позволяет возвращать данные со страниц что бы их сп... кхм... спарсить)), на практике получается bs или чистый lxml будет более правильным выбором, т.к. меньше грузят систему и в целом более ориентированы под данную работу, следовательно имеют более широкий функционал и производительность (например если нужно обработать большой массив данных).
Selenium же больше подойдет, если по какой либо причине сайт жмотит данные через отправку запросов (хотя тут оч странно, ведь эмулируя взаимодействие с элементом, например кликом по кнопке, мы по сути просто активируем скрипт отправляющий запрос с определенными параметрами, на сервер... хотя может я и ошибаюсь, поправьте пожалуйста если что не так, буду знать на будущее), то есть когда для того что бы позаимствовать информацию с сайта, нам проще (или необходимо) имитировать взаимодействие пользователя со страницей и собрать данные с прогруженной страницы.
А диз поставил админ сайта ))
Ну 😀
Хороший видос!
Благодарю 😀
Мне кажется пора на частичную монетизацию курсов для новичков надо переходить. Всё видео классные. Было бы прикольно обучаться по группам (платно естественно)
Давно вынашиваю идею платформы. Но я далеко не профессионал. Веду несколько человек персонально, на всё времени не хватает)
Благодарю за фидбэк!
@@PythonToday да хотя 5 или 10 норм будет. Остальные пуска ждут. Так больше мотивации учится ждущих будет
Очень интересно, хотя я в программировании совсем ламер)
Спасибо, вливайся, учиться никогда не поздно!
Привет, можно с помощью этих библиотек скачать картинку с лучшим разрешением через «поиск картинки в гугле»? Если нет, то какими библиотечками воспользоваться?
Добрый день. Спасибо за видео очень интересно. Немого бы подсказать. Как сделать парсинг с сайта с тестами и как в итоге получается. Спасибо
Очень круто . Как раз именно на это месте вчера остался сам учусь . Только у меня момент может быть такое например CZcams selenium открывает так же сохраняю страницу в переменную но там не все ? Это проблема в загрузке или есть что то еще чего я не знаю ??? Пожалуйста 🙏 ответь
Огромное спасибо тебе за труды
Топ!!!
Спасибо!
День добрый. Смотрю, что работаешь через Visual Studio. Такой вопрос, а как была решена проблема с "UTF-8"? Я делаю запросы на наши сайты , а мне выдает ошибку по этому шифрованию. Когда делаю на английские, то все норм. Как решился вопрос с кириллицей?
как говаривают классики: - ничего не понял ,но оч интересно. Лайк и подписон от старичка - студента =)
стоп а вы вообще программист
@@blackassasin5246 юрист. учусь на прогера.
@@user-bh5gt3ew9t тогда спрошу один грубый но закономерный ,вопрос почему ты это смотришь ты даже не программист я уже не говорю знаний пайтон и html
@@blackassasin5246 я учусь на прогера, в контексте видосы вылезают вот и смотрю. =)
@@blackassasin5246 в знак поддержки автора, подписался на канал. и в метро смотрю мало-помалу )
Добрый день, подскажите где искать headers на маке?
благодарю.
Блин, круто! ПОлучается это все можно делать и с сайтами типа sofascore и подобным им? У софы есть api, но там сложно найти инфу которая нужна
Здравствуйте,
А как можно получать данные с сайта которые постоянно обновляется?, если сделать запрос то выдается данные на момент запуска кода а мне нужно чтобы всегда данные были свежие
1. Параметр executable_path больше не используется в текущей версии selenium`a, теперь вместо него нужно передавать экземпляр класса Service:
Python:
импортируем:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
после try ваш код меняется на :
try:
s=Service('C:/Users/User/Desktop/Python/обучение 2/geckodriver.exe') (указываем свою директорию)
driver = webdriver.Firefox(service=s)
driver.get(url=url)
time.sleep(5)
или можно просто добавить chromedriver.exe в PATH и использовать без параметров driver = webdriver.Chrome().
2. Еще момент: вылезает "'charmap' codec can't encode character '\u20bd' in position 97452: character maps to "
меняю кодировку на "utf-8"
with open("index_selenium.txt", "w", encoding="utf-8") as file:
и потом записаный код в этой кодировке уже не прочитать нормально
короче тут я застрял, кто шарит помогите
если что-то не так исправьте меня пожалуйста
открывай тоже в "utf-8" )
нашел ответ?)
вместо encoding="utf-8" записать ensure_ascii=False
какой же ты крутой мужик, дай бог тебе никогда не болеть и жить счастливо!!!
ЕСТЬ ВОПРОСЫ
не могу разобраться с заголовками:
в первом видео плейлиста ты забирал заголовки accept и user-agent
в последующих видео тебе хватало только user-agent
сейчас ты забрал: accept, accept-encoding, accept-language, cache-control, connection и user-agent
как понять какие заголовки мне нужны в переменной headers и по какому принципу их выбирать?
А еще есть ли разница в каком гет запросе брать эти заголовки? Часто замечаю что во вкладке network прилетают несколько разных запросов и тот же user_agent лежит почти в каждом, но не в каждом запросе лежат одни и те-же заголовки. И если есть разница, то как определить нужный нам запрос?
Благодарю за поддержку! Работа с каждым сайтом индивидуальна. Большинство тебе отдадут контент вообще без указания каких либо заголовком. Где-то нужен user-agent, где-то нужно указывать accept, т.к элементарно надо получить именно json ответ. По поводу "как определить нужный нам запрос", не понятно. Ты ведь к конкретной странице его совершаешь, так и смотри в network.
Бро, запили видос про авторегер аккаунтов на каком либо сайте, где брать интернет запросы и как их повторить на питоне.
Спасибо огромное за уроки, очень понятно все...Пробую парсить сайт, попробовал все возможные способы, но с помощью request не достается весь код со страницы, а на странице нет api ссылки, вот не знаю как подобраться, все видео посмотрел...
в предыдущих уроках прриходилось гуглить и искать решения, потому что код сайта поменялся с момента как Вы отсняли ролик. Но в этом уроке наоборт сайт изменился в лучшую сторону и его можно спарсить через requests. Но я все равно повторяю пример с селениумом чтобы научиться.
Кстати информация для таких же студентов как я: если сохранить страницу а потом удалить из нее все JavaScript элементы то можно без проблем просматривать ее содержимое и полезный контент. Я так понимаю через яваскрипт тут отключено отображение полезного контента. А если просто парсить без просмотра через BeautifulSoup то проблем не будет ведь JavaScript работает только в браузере.
Подскажи пожалуйста, а как удалить джава скрипт из кода
Качественные уроки, спасибо, а как ты выделяешь и комментируешь сразу несколько строк? Я когда пытаюсь так сделать, у меня просто одна решетка ставится, а код удаляется
в Pycharm делается как Ctrl + / (перед эти выделив, что нужно закоментировать) и это надо делать в En раскладке
а если у меня драйвер в формате exe я просто установил его? мне тогда просто указать путь до exe?
Сделай тему про обход защиты cloudfire
Давай след видос про авторизацию через гугл
Спасибо! ;з
Благодарю!
3:27
подскажите почему не создает Html файл когда запускаю код, все сделал так же
система Win 10
есть сайт с которого надо инфу спарсить
Но там стоит клауд а селением я так понимаю не проходит его?
Можно видео где будешь решать капчу с помощью запросов, ну и какого то сервиса пример рукапча
Спасибо за уроки! Сейчас столкнулся с тем, что код сайта не совпадает с тем, что я получаю через requests. Полез смотреть этот урок. Скажите, пожалуйста, если при исследовании запросов я нашел запрос, который при открывании в новой вкладке дает следующий текст: "Error 1020 Access denied. What happened?
This website is using a security service to protect itself from online attacks."
Такую защиту простому новичку уже не обойти? Это сайт маркета с игровыми предметами. Хотел парсить нужные мне позиции и отслеживать цену.
используй proxy должно сработать
смотрю на все это, мне это предстоит изучать. Страшно и интересно одновременно )
Век живи - век учись. В программировании нужно учиться каждый день. Не важно деть, месяц или 20 лет пишешь код. Но возможности открываются безграничные.
@@PythonToday спасибо за добрые слова =)
Не создаётся html файл в корне PyCharm, код выполняется а файла нет, подскажите куда копать
Большая просьба показать как можно спарсить конкретные данные уже из самого расширенного блока страницы к примеру продажи квартир, дата создания и редактирования и № телефона находятся в конкретной отдельной ссылке одного блока куда надо отдельно заходить. Как можно объединить поверхностный парсинг с инфой которую нужно достать через проход в углубленные ссылки данных !!!!
Подскажите, а не сталкивались с выгрузкой, где есть псевдоклассы ::before например...никак не могу их обойти
Да постоянно, а в чем проблема. Можно ведь шагать по элементам как хочешь. find_next, next_element, работа с parents и т.д, если мы говорим о BS
котэ 1yoбывает! Спасибо за видео!
Спасибо за фидбэк)
Как отформатировали html на 3:30 что за хот-кей, подскажите пожалуйста
ctrl + alt + L, касается не только html
Что делать, если не дает пройти аутентификацию через гугл, другую нет возможности использовать..
Спасибо большое!
Хороший способ. Жаль, что до конца не показана вся работа в одном видео. Сайт-то не из простых. Ведь Вы спарсили только первые 100 ссылок. А хотелось бы посмотреть как спарсить все, а потом получить инфу по каждому отелю.
Чтобы парсить более 100 ссылок при помощи Selenium можно добавить блок While и прокликать:
driver.get(url=url)
time.sleep(5)
while True:
try:
driver.find_element_by_id('rsrvme_hc_show_more_dv_a').click()
time.sleep(5)
except Exception:
break
Привет, подскажите, как можно организовать поиск если нет классов, только теги, а нужная информация лежит в тегах , в них есть style=....
Через .find_next используя циклы
Видео класс!
НО Вылезла ошибка:
"AttributeError: 'options' object has no attribute 'set_preference'"
Помогите решить
было бы хорошо показывать паралельно с уроками по парсингу другие полезные фишки питона. Например такие как односторчные генераторы или фильтрация по лямбда функции. Захотелось детально распарсить скачанные карточки(вытащить ссылки на фото, описание и тд) пришла идея сохранить такие данные как ссылки на фото в список а потом записать в json но получилось слишком нагроможденно, а потом вспомнились генераторы списков и функция фильтр
galery = list(filter(lambda x: len(x) > 50, (photo.get('src') for photo in soup.findAll('img', class_='img'))))
это сбор всех ссылок на фото из карточки отеля, фильтрация по длине меньше 50 потому что там много фото с логотипами и прочим мусором имеют длину до 48 символов.
desccription_list = [desc.text.replace('
','').replace('
','') for desc in soup.find(class_='about-hotel__item').findAll('li', class_='about-hotel-list__item')]
Доброго времени суток
Сам подобную решал за счёт одного селениума, именно при помощи get_attribute.
Насколько бы тут работало, или лучше, но Вы тут тоже юзали селениум.
Привет, не понял твоего вопроса
@@PythonToday Это утверждение)
По факту requests и bs4 для скрепинга не нужны, только селениум.
Другое дело тестить API. Тут без requests никак.
selenium сохраняет пустой файл, в чем может быть причина ?
В благодарность, напишу бота, который накрутит тебе лайки. Огромный респект.
Спасибо конечно за респект. Для чего? Думай что говоришь, за такую благодарность, получишь бан
Класс!)
Подскажи пожалуйста, как ставить массово комментарии через решетку?
Благодарю за фидбэк! Если правильно тебя понял, то выделяешь текст и ctrl + /
@@PythonToday Благодарю)
Подскажите, как можно запарсить яндекс дзен? вообще какую-то фигню выводит
А где можно взять заказы?
Какой редактор кода используете? Как называется?
PyCharm
@@PythonToday Благодарочка)
у меня в файле html символы не понятные,как поменять метод шифрования?
В headers, оставь только 'user-agent', остальные параметры удали.
Добрый день, не получается скачать библиотеку с терминала подскажите что делать, пишет что 'pip' not recognized
Приветствую, думаю для начала нужно поставить сам pip если его нет
Ребята, помогите, пожалуйста, на 3:26 как из строки код привести в нормальный вид?
такой же вопрос
В headers в этот раз указано много вводных в отличие от прошлых примеров, с чем это связано , кто знает киньте ссылку на правила пл которым эти заглдовки нужно прописывать , я например вообще их не указал и данные с сайта вме равно получил без всяких банов.
То есть Selenium подгрузил весь HTML, в отличии от bs4?
Есть библиотека типо Реквест только с поддержкой JS и она может как раз собирать Такие вот ссылки, я видел как ее использовали но у самого руки не дошли, хотелось бы увидеть примеры ее использования в виде гайда.
И что за библиотека "с поддержкой JS"? Название напиши.
@@PythonToday в том то и суть что я не помню названия, потому что сам не пользовался ей.
Возможно у вас будет ошибка. Замените в try driver на driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
Только прошел этот урок. Теперь оказывается не надо скачивать драйвер и ставить его в директорию потом в параметрах указывать путь. Сейчас скачивается библиотека webdriver-manager и все импортируется оттуда в проект. Объект driver = webdriver.Firefox(service=Service(GeckoDriverManager().install()))
Чтобы не передавать settings для маскировки браузера, существует модуль undetected_chromedriver
Всем Привет, у меня проблема в следующем : когда открывая файл index.html , вместо кода кваказябры какие-то) encoding="utf-8" не помогает( . Подскажите пожалуйста, автору спасибо огромное за его труд!
Спасибо за фидбэк! Думаю потому, что используешь Windows. Добавляй параметр encoding при работе с файлами, пробуй разные кодировки. Just google или почитай комментарии к видео
К первому по плейлисту в парсинге
@@PythonToday Спасибо, уже читал , но все равно не работает) Буду разбираться, или же психану и поставлю линукс))
Такая же проблема! Есть решение?
@@user-np8ol2vm2b не могу понять какую кодировку надо
Сделайте так чтоб данные от парсинга шли в телеграм бота
Зачем сохранять страницу в файл и только потом ее парсить bs4, если можно парсить ее сразу средствами selenium без использования лишних библиотек и перезаписей файла?
У меня у одного отели не грузит?
11:47
Скажите а на windows это так же будет работать?
С некоторыми корректировками да.
@@Thallrasha скажите пожалуйста с какими корректировками?
@@denruslife9845 В новой версии селениума немного по другому в веб драйвером надо работать(в документации есть поправки) и при сохранении- загрузке html файла надо указывать кодировку utf-8
Сделай что нибудь с ВКонтакте , какой нибудь скрипт на что нибудь
Есть же видео на канале. Правда до ума не довел пока