Parsing sites PYTHON - # 2 BEAUTIFUL SOUP, FAKE-USERAGENT

Parsing sites PYTHON - # 2 BEAUTIFUL SOUP, FAKE-USERAGENT
📗 All links to useful materials are below 📗
We will analyze the parsing of python sites, examine the modules
requests, bs4 (BeautifulSoup), fake-useragent, multiprocessing.
Let's write a lot of parsers in python, learn how to find the elements we need
on the page, we will analyze the structure of requests requests, learn how to transfer
your headers and your data to the site.
During the course, we will write a program to download files
from the site, we will learn how to transfer proxies and user agents to the request.
Let's take a look at how to parse the site using the ones we have already studied.
tools. Towards the end of the course, we will also explore multiprocessing for accelerated parsing. In this video, we will learn how to collect the received data using the beautiful soup module and how to use fake-useragent to generate unique user agents.
⭐ Free version of Kite: bit.ly/3cKz97C
⭐ PyQt5 Python Course: pyqt5.ru
⭐ Channel with useful material: t.me/codeblog8
📁 Website scraping course: bit.ly/394VKtG
📁 Selenium Python Course: bit.ly/3p669ef
📁 Contact me: zproger777@gmail.com
📁 Support channel: www.donationalerts.com/r/zproger
Libraries used:
requests, bs4
lxml, fake-useragent
multiprocessing
#ParsingSites #ParsingSitesPython #ParsingPython

Пікірлер: 147

  • @zproger
    @zproger3 жыл бұрын

    ⭐Курс ООП и Приват канал: zproger-school.com/ ⭐Телеграм канал: t.me/+ltjhP8CCll80NTAx Не забывайте оставлять свои идеи для следующих видео в комментариях, большинство из них реализовывается на канале. Также подписывайтесь на канал, так как именно у нас публикуется отборный материал, который позволит вам изучать программирование и другие технологии в разы быстрее.

  • @user-eq8gz3kj9t
    @user-eq8gz3kj9t Жыл бұрын

    Господи, ура! Целую неделю пытался найти нормальные видео по парсингу данных, уже отчаялся и тут появляетесь вы со своими прекрасными объяснениями! Спасибо)

  • @user-vk3ze8iv4t
    @user-vk3ze8iv4t3 жыл бұрын

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

  • @zproger

    @zproger

    3 жыл бұрын

    Ещё много чего интересного будем рассматривать на этом канале :)

  • @maksonaladin4033
    @maksonaladin40338 ай бұрын

    Офигенные уроки. Когда просто бегло смотрел, казалось всё элементарным. Начал повторять и документировать - сразу увидел, сколько же тут нюансов. Очень хорошо проработаны занятия, есть возможность, посмотрев один пример, поставить на паузу и дальше делать самому для закрепления. Многое всё ещё очень поверхностно понимаю в плане того, как оно вообще работает, но в целом всё получается :)

  • @user-gw7ps9lw3p
    @user-gw7ps9lw3p3 жыл бұрын

    Отличный курс! Все понятно и кратко. Лаконичность это большой плюс. Спасибо)

  • @zproger

    @zproger

    3 жыл бұрын

    Спасибо, рад что вам понравилось.

  • @dol0resh4ze19
    @dol0resh4ze193 жыл бұрын

    Вы шикарный учитель, спасибо вам!

  • @zproger

    @zproger

    3 жыл бұрын

    Рад что смог помочь :)

  • @fatherlandboy
    @fatherlandboy3 жыл бұрын

    Чувак, спасибо. Смотрел кучу уроков, нифига не было понятно, а тут получилось!)

  • @zproger

    @zproger

    3 жыл бұрын

    Пожалуйста :)

  • @kakw436

    @kakw436

    2 жыл бұрын

    @@zproger почему у меня не работает .text

  • @m0hdapuh874

    @m0hdapuh874

    Жыл бұрын

    Тоже самое

  • @abris_6977
    @abris_6977 Жыл бұрын

    Ты просто лучший, не изучая парсиинг начал заниматься этим по видосу, когда шел строго по видел все работало нормально)) еще бы оно не работало так то, но как начал сам то сразу застрял,и потом нашел твои ролики, тут ты все понятно и с примерами объяснил. От всей души спасибо 🤝

  • @Alex-kp9jy
    @Alex-kp9jy3 жыл бұрын

    Очень полезный курс, спасибо 😄

  • @zproger

    @zproger

    3 жыл бұрын

    Рад что вам понравилось, сейчас также реализовывается новый курс по Selenium, возможно вам это будет интересно

  • @ivanbozhko6747
    @ivanbozhko67473 жыл бұрын

    Супер подача материала, с меня лайк, а с Вас ЕЩЕ БОЛЬШЕ КОНТЕНТА😄

  • @zproger

    @zproger

    3 жыл бұрын

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

  • @codelearner2986
    @codelearner2986 Жыл бұрын

    Отличный видос, сильно помог подробными разъяснениями

  • @GFU472
    @GFU4723 жыл бұрын

    Познавательно! Умеешь объяснять и это круто.

  • @zproger

    @zproger

    3 жыл бұрын

    Спасибо :)

  • @Bondik202
    @Bondik2023 жыл бұрын

    спасибо огромное ! видос вроде короткий но очень содержательный .

  • @zproger

    @zproger

    3 жыл бұрын

    Рад что вам понравилось :)

  • @user-rm5wi9tu8u
    @user-rm5wi9tu8u10 ай бұрын

    а вот это объяснение хорошее! Спасибо за материал!

  • @zproger

    @zproger

    10 ай бұрын

    Благодарю

  • @user-hk8bh5jg7s
    @user-hk8bh5jg7s3 жыл бұрын

    первый человек кто про парсинг на питоне ОБЪЯСНЯЕТ, а не рассказывает

  • @zproger

    @zproger

    3 жыл бұрын

    Спасибо :)

  • @fahrenheit1863
    @fahrenheit1863 Жыл бұрын

    Отлично, материал зашел на ура, осталось только потренироваться для закрепления пройденного. Оказалось html разный приходит если запрос с куками лии без.

  • @pepemem9215
    @pepemem92153 жыл бұрын

    отличное видео, спасибо автору за труд)

  • @zproger

    @zproger

    3 жыл бұрын

    Спасибо, очень приятно

  • @user-xv7sh6lp7o
    @user-xv7sh6lp7o2 жыл бұрын

    Спасибо за видео!

  • @zproger

    @zproger

    2 жыл бұрын

    Пожалуйста :)

  • @voron_vrkrft
    @voron_vrkrft Жыл бұрын

    очень помог, спасибо)

  • @PrevzoraChannel
    @PrevzoraChannel3 жыл бұрын

    Спасибо, помогло понять)

  • @zproger

    @zproger

    3 жыл бұрын

    Рад что смог вам помочь

  • @msc_Noname
    @msc_Noname3 жыл бұрын

    Как по мне, так отличные уроки.

  • @zproger

    @zproger

    3 жыл бұрын

    Спасибо

  • @timon1816
    @timon1816 Жыл бұрын

    Не знаю почему, но я кайфую с такого спокойного голоса

  • @zproger

    @zproger

    Жыл бұрын

    благодарю

  • @user-vm7zy7tw1j
    @user-vm7zy7tw1j Жыл бұрын

    Отличная подача. Но вопрос - у меня выдает ошибку при попытке установить lxml. Можно заменить другой библиотекой?

  • @Grigorev84
    @Grigorev842 жыл бұрын

    Спасибо!

  • @zproger

    @zproger

    2 жыл бұрын

    Рад что понравилось :)

  • @NordieWolf14
    @NordieWolf14 Жыл бұрын

    а как добавить блок в soup если там нету id или класса? Например на github просто ...

  • @egoryasinetsky8792
    @egoryasinetsky8792 Жыл бұрын

    Почему-то при первом и втором способе подмены юзер агента всё равно выдаёт python-requests/2.28.1 Кто может подсказать в чем ошибка?

  • @mihailplehov7892
    @mihailplehov7892 Жыл бұрын

    Спасибо за лекцию! А кто-нибудь сталкивался с такой проблемой: при запуске кода на хостинге не работает модуль фейкового юзер-агента? Пишет, что модуль не найден

  • @rafaelhakobyan2848
    @rafaelhakobyan28482 жыл бұрын

    Спасибо

  • @zproger

    @zproger

    2 жыл бұрын

    :)

  • @n_ulls
    @n_ulls2 жыл бұрын

    Можешь подсказать, как div с browser_lang вывести? Я не могу понять как вывести текст из блока и спан первый , чтобы показывалось пр.: Язык: Русский (ru)

  • @user-il9tp9qx1b
    @user-il9tp9qx1b8 ай бұрын

    При парсинге разрешения текущего размера окна с сайта-примера в видео аналогично user-agent - в ответе ничего. Разрешение не удаётся выцепить. Хотя всё аналогично. Подскажите, в чём проблема? Использую код: check_window=block.find('div', id="window_size").text result_window=f'window: {check_window}' print(result_window) В ответе: window: т.е. разрешение не выцепляет

  • @Single_Tone
    @Single_Tone Жыл бұрын

    Подскажите пожалуста, как называется музыка на фоне?

  • @shurfly6961
    @shurfly69612 жыл бұрын

    Почему ошибка из за lxml, правильно html.parser возможно из за обновления 3.10 python ?

  • @c1vgk
    @c1vgk2 жыл бұрын

    Мега крут

  • @zproger

    @zproger

    2 жыл бұрын

    Благодарю :)

  • @Monte_Cristo_R
    @Monte_Cristo_R3 жыл бұрын

    блин сколько видосов про парсинг смотрел, твои пока самые внятные и понятные . всё по полочкам всё понятно. А то вот недавно смотрел видосы у одного чувачка прикольного и вроде всё понятно а потом он такой бах и говорит тут мы прописываем в методе select ксс силектор :nth-child(2) и все погнали дальше по коду. ппц и вот думай гадай что такое эти селекторы пздц

  • @zproger

    @zproger

    3 жыл бұрын

    Рад что смог помочь :))

  • @4eJICu

    @4eJICu

    3 жыл бұрын

    для парсинга, лучше конечно верстку еще знать, видимо у него расчет на такую аудиторию был.

  • @djdkdkrk
    @djdkdkrk Жыл бұрын

    на 12 строчки кода, это 6 минута видео, у меня выдает Ошибку-индекса :( list index out of range, почему так?

  • @v.dobroslavskiy
    @v.dobroslavskiy Жыл бұрын

    3:57 что делать если не показывает нужный код сайта? выдает значения которые не нужны, показывает head и то другой какой то, а body якобы пустой

  • @alexzir
    @alexzir3 жыл бұрын

    Спасибо! Жаль что нет ссылки на следующее видое

  • @zproger

    @zproger

    3 жыл бұрын

    На канал нужно перейти, все видео уже давно в плейлисте

  • @user-ff8xv2vn7c
    @user-ff8xv2vn7c2 жыл бұрын

    При попытке использования fake_useragent выдает следующую ошибку: fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached Может знает кто, в чем проблема?

  • @TheStrix1
    @TheStrix1 Жыл бұрын

    хорошо если сайт просто отдает данные по Get а если там нужно с ключами как на озон например ничего не отдаст по гет просто так

  • @user-bu2ho2xr4y
    @user-bu2ho2xr4y Жыл бұрын

    Урок хороший, только у меня подтягивает не верное значение JavaScript, в браузере написано "Включено", а подтягивает "Выключено "

  • @Fr0m_GaMes_to_Life
    @Fr0m_GaMes_to_Life20 күн бұрын

    Люди короче вопрос, я просто хочу собрать слова с сайта РЕШУ ЕГЭ в отдельный файл, нужны слова,где есть "..",это я сделал с помощью re, но почему то собираются слова только с первых 5 заданий, а остальной текст насколько я понял даже не пришел после запроса, почему такое может произойти и как можно пофиксить.

  • @user-ot5iy5es4l
    @user-ot5iy5es4l3 жыл бұрын

    А что если я получаю не весь html код?Если в браузере смотреть там есть div классы и тд,вывожу через text, там их нету.Через content тоже пробовал.В итоге не получается bs найти значения

  • @zproger

    @zproger

    3 жыл бұрын

    Возможно это значение подгружается через js, а requests не обрабатывает их.

  • @user-ot5iy5es4l

    @user-ot5iy5es4l

    3 жыл бұрын

    @@zproger пробовал json обрабатывать,толку0

  • @neilwilson4075
    @neilwilson4075 Жыл бұрын

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

  • @astoriy1085
    @astoriy1085 Жыл бұрын

    не особо понял, для чего нужен fake_useragent, можете объяснить на примере?

  • @zproger

    @zproger

    Жыл бұрын

    Юзер-агент должен быть всегда разный во время парсинга, чтобы сайт думал что это разные устройства.

  • @user-qg2pm9to3w
    @user-qg2pm9to3w2 жыл бұрын

    А как искать необходимый div, если во всем коде нет ни единого id, только классы?

  • @zproger

    @zproger

    2 жыл бұрын

    Тогда искать по классам

  • @kakw436

    @kakw436

    2 жыл бұрын

    class_=' ' {'class': ' '}

  • @Klon114
    @Klon1142 жыл бұрын

    Вроде, все то же самое сделал, но все равно пишет User-agent: python-requests/2.26.0

  • @zproger

    @zproger

    2 жыл бұрын

    модуль user-agent обновился и теперь работает по-другому, подробней на офф.странице: pypi.org/project/fake-useragent/

  • @user-yl6ib4iy9t
    @user-yl6ib4iy9t11 ай бұрын

    Шикарный урок. Спасибо. 🤝 Только на будущее не говори пожалуйста яваскрипт, не ява ведь... джава, жаба. Но блин ява эт прям больно слышать 😱👀

  • @zproger

    @zproger

    11 ай бұрын

    я вроде как никогда не говорил ява скрипт

  • @Grigorev84
    @Grigorev842 жыл бұрын

    Автор, ответьте пожалуйста, зачем мы создали block? Мы же можем искать сразу в soup... этот момент я как то недопоянл

  • @Grigorev84

    @Grigorev84

    2 жыл бұрын

    И ещё вопрос как парсить не через id а через class

  • @Grigorev84

    @Grigorev84

    2 жыл бұрын

    Попробовал спарсить заголовки рбк, не поулчается 'NoneType' object has no attribute 'text'

  • @Risehack
    @Risehack3 жыл бұрын

    У меня возникла проблема. Программа работает, но когда картинка скачивается то она потом просто не открывается. Пытался подсоединить fake_useragent, тоже не помогло. Как быть?

  • @zproger

    @zproger

    3 жыл бұрын

    Какие-то ошибки есть? Нужно больше информации, я к сожалению не читаю мысли :)

  • @Risehack

    @Risehack

    3 жыл бұрын

    @@zproger Ошибок нет. Вот файл с кодом: drive.google.com/file/d/11j-l5ybd4o-HMGMbSsslK0svgjdBkv5L/view?usp=sharing А вот что мне пишет, когда я пытаюсь открыть картинку на ПК: drive.google.com/file/d/1XNsL-1Ypkz-kqQ3qhgQcyKKTEAExgRb7/view?usp=sharing

  • @Risehack

    @Risehack

    3 жыл бұрын

    @@zproger Я парсил другой сайт, хотя на вашем также было

  • @user-pn4yn2rw5k
    @user-pn4yn2rw5k2 жыл бұрын

    bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?помогите весь интернет облазил уже сто раз перепроверил то что lxml установлен

  • @user-pn4yn2rw5k

    @user-pn4yn2rw5k

    2 жыл бұрын

    если у кого нибудь такая же проблема попробуйте поменять парсер с "lxml" на 'html.parser'

  • @zproger

    @zproger

    2 жыл бұрын

    Нужно устанавливать его глобально

  • @user-jn1mz3uh2t
    @user-jn1mz3uh2t Жыл бұрын

    Что за музон? Хочу такой

  • @n_ulls
    @n_ulls2 жыл бұрын

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

  • @zproger

    @zproger

    2 жыл бұрын

    Возможно видео неудачно обрезал, но заголовки будут участвовать только в случае если напрямую передать аргумент headers в самом запросе, либо же если это сессия, то в случае с обновлением списка session.headers

  • @n_ulls

    @n_ulls

    2 жыл бұрын

    @@zproger спасибо)

  • @ahil7800
    @ahil78002 жыл бұрын

    Если вместо user-agent писать случайный набор символов, то не парсит, выдаёт пустой список.

  • @zproger

    @zproger

    2 жыл бұрын

    Да, это не будет работать на всех сайтах

  • @user-hj4pb5zb2q

    @user-hj4pb5zb2q

    2 жыл бұрын

    @@zproger А что тогда делать?

  • @romashkahehe6270
    @romashkahehe6270 Жыл бұрын

    Видео крутое... Но возникла проблема, помогите пожалуйста. Пишет, что нет модуля fake_useragent, при том, что он установлен.

  • @romashkahehe6270

    @romashkahehe6270

    Жыл бұрын

    Не работает только в pycharm, в идле всё нормально.

  • @KarikhSergey
    @KarikhSergey Жыл бұрын

    Ну "ФиндОл" всё объясняет ))

  • @zproger

    @zproger

    Жыл бұрын

    :))

  • @rolton6307
    @rolton63072 жыл бұрын

    что делать если в строке с использованием find-all не работает .text

  • @zproger

    @zproger

    2 жыл бұрын

    Какую ошибку получаете?

  • @yuzeless493
    @yuzeless4933 жыл бұрын

    Вот вместо этой возни с requests.get(url, headers=headers) лучше бы сразу показал сессии, где можно сразу задать Session.headers и Session.proxies

  • @zproger

    @zproger

    3 жыл бұрын

    Безусловно можно, но в данном уроке сессии ещё не рассматриваются, и необходимо знать каким образом можно передавать заголовки помимо сессий.

  • @testtester73
    @testtester732 жыл бұрын

    You can use teg find_all

  • @zproger

    @zproger

    2 жыл бұрын

    :/

  • @vladimir7759
    @vladimir77592 жыл бұрын

    что лучше суп или скрапи? что популярней на фрилансе?)

  • @zproger

    @zproger

    2 жыл бұрын

    Обычно нет четких требований к инструменту, который нужно использовать. Скрапи подойдет для крупных проектов, а небольшие проекты можно на bs4 сделать.

  • @miami_racer4378
    @miami_racer43783 жыл бұрын

    Что делать если я хочу получить ссылку, но вместо ссылки я получаю значок #

  • @zproger

    @zproger

    3 жыл бұрын

    Значит в этом атрибуте и лежит данный символ, необходимо проверить наличие ссылки в нем.

  • @miami_racer4378

    @miami_racer4378

    3 жыл бұрын

    @@zproger проблему решил, я не тот тег смотрел.

  • @f4ke543
    @f4ke543 Жыл бұрын

    как понять что это основной блок 3:58, кто тут, можете помочь?

  • @Awdesk_
    @Awdesk_2 жыл бұрын

    топ видео, но почему-то модуль fake-useragent не работает

  • @Awdesk_

    @Awdesk_

    2 жыл бұрын

    Посмотрю документацию, возможно, модуль обновился

  • @zproger

    @zproger

    2 жыл бұрын

    Модуль был обновлен

  • @personx5954
    @personx59543 жыл бұрын

    Как работает header?

  • @zproger

    @zproger

    3 жыл бұрын

    Это обычные заголовки, которые передаются на сервер.

  • @personx5954

    @personx5954

    3 жыл бұрын

    @@zproger аа, у меня просто не работает, наверное из-за того что я через телефон делаю

  • @mykolavarvarchuk937
    @mykolavarvarchuk9373 жыл бұрын

    +++

  • @zproger

    @zproger

    3 жыл бұрын

    :)

  • @marinamarine5306
    @marinamarine53063 жыл бұрын

    а почему lxml а не json?

  • @zproger

    @zproger

    3 жыл бұрын

    Привык всегда его использовать :)

  • @kakw436
    @kakw4362 жыл бұрын

    почему у меня не работает .text

  • @zproger

    @zproger

    2 жыл бұрын

    Если ошибка NoneType, значит не удалось найти объект по идентификатору

  • @dor1k991
    @dor1k99111 ай бұрын

    Сайт во время урока умер - топ!

  • @zproger

    @zproger

    11 ай бұрын

    Это сайт не для урока, я нашел рандомный из выдачи) Главное найти что-то подобное

  • @ItsGame228
    @ItsGame2283 жыл бұрын

    если айди нету а только class

  • @zproger

    @zproger

    3 жыл бұрын

    Ну так используйте class_ вместо id

  • @DonnyWTF
    @DonnyWTF Жыл бұрын

    Жява скрипт😂

  • @zproger

    @zproger

    Жыл бұрын

    Жаба скрипт :)

  • @deniskuznetcov3193
    @deniskuznetcov31932 жыл бұрын

    Запутался к концу видео, это изменили,это удалили, тут добавили, там переделали))). К концу видео уже и не понимаю что к чему))

  • @zproger

    @zproger

    2 жыл бұрын

    Спасибо за комментарий, я учту всё это, чтобы сделать следующие видео лучше

  • @deniskuznetcov3193

    @deniskuznetcov3193

    2 жыл бұрын

    @@zproger да если можно)) а то уже к середине не понимал что мы делаем а в конце вообще запутался что писал и для чего)) Если можно в след раз писать и озвучивать вот этот код для этого и делает это, если изменить в коде это, на выходе получаем этот результат)) не сваливать все в одну кучу, и по ходу не изменять его и не удалять))

  • @Grigorev84

    @Grigorev84

    2 жыл бұрын

    Я пишу код вслед за автором, и потом уже анализирую конечный код, вопросов не возникает.

  • @user-lj7ql4os9o
    @user-lj7ql4os9o Жыл бұрын

    жява скрипт)

  • @zproger

    @zproger

    Жыл бұрын

    =))

  • @s_merq
    @s_merq Жыл бұрын

    Здравствуйте! Спасибо за видео! Скажите пожалуйста, ваш курс на степике отличается от цикла этих видео? Что я смогу найти на степике, чего нет на ютубе заплатив 30 долларов? И на 3 минуте видео можно же было сразу написать soup.find('div', id="javascript_check") и он бы нашел нужный блок в рамках этого сайта, или я что-то путаю...

  • @zproger

    @zproger

    Жыл бұрын

    Здравствуйте, на степике на 3 видео больше чем здесь и он время от времени обновляется. Но это скорее как способ поддержать канал.

  • @RoKivals
    @RoKivals2 жыл бұрын

    Ну концепция парсинга объяснена доступна, а вот то, что по сути он подтягивает неверные данные это вообще не смущает?

  • @zproger

    @zproger

    2 жыл бұрын

    Не заметил этого, где именно оно подтягивает неверные данные?

  • @network_sw
    @network_sw7 ай бұрын

    А где виртуальное окружение, зачем загаживать систему всеми зависимостями пакетов, которые нужны только этому скрипту? Ну и финд олл конечно... )))

  • @ivanvana
    @ivanvana2 жыл бұрын

    Когда вы начнёте грамотно писать слово "response"?

  • @zproger

    @zproger

    2 жыл бұрын

    Уже пишу :D

  • @tispoint
    @tispoint3 жыл бұрын

    английский язык автору стоит подтянуть.. "финд" - это find уши режет

  • @zproger

    @zproger

    3 жыл бұрын

    Я произношу по-разному, знаю что это не правильно, но не замечаю за собой некоторые моменты

  • @justasemza6945
    @justasemza69455 ай бұрын

    Что то нихуя не работает)...

  • @pulsarofsamsara1625
    @pulsarofsamsara16257 ай бұрын

    а ведь можно в бесконечном цикле запустить get(link), да еще и в несколько потоков. (закадровый смех от собственных грязных мыслей)

Келесі