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

Поделиться
HTML-код
  • Опубликовано: 10 янв 2025

Комментарии • 151

  • @zproger
    @zproger  4 года назад +7

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

  • @КириллЛисович-в7п
    @КириллЛисович-в7п 2 года назад +13

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

  • @maksonaladin4033
    @maksonaladin4033 Год назад +2

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

  • @АлександрОрачев
    @АлександрОрачев 4 года назад +8

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

    • @zproger
      @zproger  4 года назад

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

  • @ЭрикМамбергер-к7н
    @ЭрикМамбергер-к7н 3 года назад +8

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

    • @zproger
      @zproger  3 года назад

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

  • @fatherlandboy
    @fatherlandboy 3 года назад +10

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

    • @zproger
      @zproger  3 года назад +1

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

    • @kakw436
      @kakw436 2 года назад

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

    • @m0hdapuh874
      @m0hdapuh874 2 года назад

      Тоже самое

  • @seraphim6968
    @seraphim6968 Месяц назад +1

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

  • @dol0resh4ze19
    @dol0resh4ze19 4 года назад +13

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

    • @zproger
      @zproger  4 года назад

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

  • @abris_6977
    @abris_6977 Год назад +1

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

  • @Alex-kp9jy
    @Alex-kp9jy 4 года назад +6

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

    • @zproger
      @zproger  4 года назад

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

  • @user-rm5wi9tu8u
    @user-rm5wi9tu8u Год назад +1

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

    • @zproger
      @zproger  Год назад

      Благодарю

  • @ИванИванов-э5х5ъ
    @ИванИванов-э5х5ъ 4 года назад +2

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

    • @zproger
      @zproger  4 года назад

      Спасибо :)

  • @timon1816
    @timon1816 Год назад +1

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

    • @zproger
      @zproger  Год назад

      благодарю

  • @ivanbozhko6747
    @ivanbozhko6747 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

  • @GFU472
    @GFU472 4 года назад +2

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

    • @zproger
      @zproger  4 года назад +2

      Спасибо :)

  • @ВладиславАврелий
    @ВладиславАврелий 3 месяца назад

    Спасибо, по уроку делал все, но с другим сайтом, все идеально получилось еще в процессе кое что добавил

  • @fahrenheit1863
    @fahrenheit1863 Год назад

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

  • @_white_name_
    @_white_name_ 6 месяцев назад +1

    за эти 14 минут я понял больше чем за 14 дней проведенный в ютублении

  • @Bondik202
    @Bondik202 4 года назад +1

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

    • @zproger
      @zproger  4 года назад

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

  • @codelearner2986
    @codelearner2986 Год назад

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

  • @v.dobroslavskiy
    @v.dobroslavskiy Год назад

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

  • @msc_Noname
    @msc_Noname 3 года назад +1

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

    • @zproger
      @zproger  3 года назад +1

      Спасибо

  • @NordieWolf14
    @NordieWolf14 2 года назад +2

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

  • @egoryasinetsky8792
    @egoryasinetsky8792 2 года назад +2

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

  • @pepemem9215
    @pepemem9215 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

  • @n_ulls
    @n_ulls 2 года назад +2

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

  • @АлексейИбн
    @АлексейИбн 2 года назад +1

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

  • @Single_Tone
    @Single_Tone 2 года назад +1

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

  • @СергейСмирнов-ь8у
    @СергейСмирнов-ь8у 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

  • @mad_bear77
    @mad_bear77 Месяц назад

    Подскажите, пожалуйста. Мне надо спросить весь сайт. Можно ли это сделать не выборочно?

  • @amadeusmox8878
    @amadeusmox8878 5 месяцев назад

    Привет. Спасибо за курс! Очень помогает.
    Вопрос: почему мы ищем по span? Я попробовал найти не используя span, а только по id, и выдало правильные значения. Я мало понимаю в питоне, а в html вообще не понимаю. Может в одном id может быть много Span'ов и нам может понадобиться какой-то конкретный? Из-за этого?

  • @АлексадрБалашов

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

  • @alexjack7892
    @alexjack7892 2 года назад

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

  • @PrevzoraChannel
    @PrevzoraChannel 4 года назад +1

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

    • @zproger
      @zproger  4 года назад

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

  • @f4ke543
    @f4ke543 2 года назад

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

  • @djdkdkrk
    @djdkdkrk Год назад

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

  • @Fit4a
    @Fit4a 2 года назад +3

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

    • @zproger
      @zproger  2 года назад +1

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

    • @kakw436
      @kakw436 2 года назад +1

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

  • @TheStrix1
    @TheStrix1 2 года назад

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

  • @voron_vrkrft
    @voron_vrkrft Год назад

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

  • @ЮраПархом-р8м
    @ЮраПархом-р8м Год назад

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

  • @shurfly6961
    @shurfly6961 2 года назад

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

  • @Klon114
    @Klon114 3 года назад +2

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

    • @zproger
      @zproger  3 года назад

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

  • @alexzir
    @alexzir 3 года назад +1

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

    • @zproger
      @zproger  3 года назад +1

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

  • @Grigorev84
    @Grigorev84 2 года назад +1

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

    • @Grigorev84
      @Grigorev84 2 года назад

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

    • @Grigorev84
      @Grigorev84 2 года назад

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

  • @Grigorev84
    @Grigorev84 2 года назад +1

    Спасибо!

    • @zproger
      @zproger  2 года назад

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

  • @АлексейПротасов-п6э
    @АлексейПротасов-п6э 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

    • @АлексейПротасов-п6э
      @АлексейПротасов-п6э 3 года назад

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

  • @astoriy1085
    @astoriy1085 2 года назад +1

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

    • @zproger
      @zproger  2 года назад

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

  • @dilukfrommonshtadt3645
    @dilukfrommonshtadt3645 5 месяцев назад

    До меня что-то никак не дойдет: если мы парсим сайт с нашими данными, и нам нужен наш юзер-агент, который написан на сайте, то зачем мы используем рандомный юзер-агент?

  • @Fr0m_GaMes_to_Life
    @Fr0m_GaMes_to_Life 7 месяцев назад

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

  • @c1vgk
    @c1vgk 2 года назад +1

    Мега крут

    • @zproger
      @zproger  2 года назад

      Благодарю :)

  • @Снюсик-н2б
    @Снюсик-н2б 3 года назад +1

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

    • @Снюсик-н2б
      @Снюсик-н2б 3 года назад

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

    • @zproger
      @zproger  3 года назад

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

  • @Vlad_isss
    @Vlad_isss 3 года назад

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

  • @neilwilson4075
    @neilwilson4075 2 года назад

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

  • @n_ulls
    @n_ulls 2 года назад +1

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

    • @zproger
      @zproger  2 года назад

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

    • @n_ulls
      @n_ulls 2 года назад

      @@zproger спасибо)

  • @Risehack
    @Risehack 4 года назад +1

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

    • @zproger
      @zproger  4 года назад

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

    • @Risehack
      @Risehack 4 года назад

      @@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 4 года назад

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

  • @voroks9405
    @voroks9405 3 месяца назад

    как парсить через классы а не через id?

  • @rafaelhakobyan2848
    @rafaelhakobyan2848 3 года назад +1

    Спасибо

  • @ahil7800
    @ahil7800 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

    • @ершик-ч6г
      @ершик-ч6г 2 года назад

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

  • @User4scraping
    @User4scraping Год назад

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

    • @zproger
      @zproger  Год назад

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

  • @СергейЩепилин
    @СергейЩепилин 2 года назад

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

  • @KarikhSergey
    @KarikhSergey 2 года назад +1

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

  • @romashkahehe6270
    @romashkahehe6270 2 года назад

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

    • @romashkahehe6270
      @romashkahehe6270 2 года назад

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

  • @yuzeless
    @yuzeless 4 года назад +1

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

    • @zproger
      @zproger  4 года назад +5

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

  • @rolton6307
    @rolton6307 2 года назад

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

    • @zproger
      @zproger  2 года назад

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

  • @testtester73
    @testtester73 3 года назад +1

    You can use teg find_all

  • @vladimir7759
    @vladimir7759 3 года назад +1

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

    • @zproger
      @zproger  3 года назад +1

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

  • @personx5954
    @personx5954 3 года назад +1

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

    • @zproger
      @zproger  3 года назад

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

    • @personx5954
      @personx5954 3 года назад

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

  • @dor1k991
    @dor1k991 Год назад

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

    • @zproger
      @zproger  Год назад

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

  • @ItsGame228
    @ItsGame228 4 года назад +2

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

    • @zproger
      @zproger  4 года назад +2

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

  • @casperhs
    @casperhs Месяц назад

    а если не указан id а указан class только

    • @EldarNachikov
      @EldarNachikov 14 дней назад

      block = soupe.find('table', {'class':"simple-little-table financials"})
      block = soupe.find('table', class_= "simple-little-table financials")
      Попробуйте так, в первом случае запрос передаётся, как словарь и проблем не возникнет, во втором случае пишем class_, если пишем просто class из-за того, class запрос find понимает как именованный аргумент, он выдаёт ошибку

  • @miami_racer4378
    @miami_racer4378 3 года назад

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

    • @zproger
      @zproger  3 года назад

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

    • @miami_racer4378
      @miami_racer4378 3 года назад

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

  • @kakw436
    @kakw436 2 года назад +1

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

    • @zproger
      @zproger  2 года назад

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

  • @marinamarine5306
    @marinamarine5306 4 года назад

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

    • @zproger
      @zproger  4 года назад

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

  • @deniskuznetcov3193
    @deniskuznetcov3193 2 года назад +1

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

    • @zproger
      @zproger  2 года назад +1

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

    • @deniskuznetcov3193
      @deniskuznetcov3193 2 года назад

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

    • @Grigorev84
      @Grigorev84 2 года назад +1

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

  • @RoKivals
    @RoKivals 2 года назад +1

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

    • @zproger
      @zproger  2 года назад

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

  • @justasemza6945
    @justasemza6945 Год назад +2

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

  • @абвгдеёж-м3н
    @абвгдеёж-м3н 2 года назад +1

    жява скрипт)

  • @network_sw
    @network_sw Год назад

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

  • @DonnyFTW69
    @DonnyFTW69 Год назад +1

    Жява скрипт😂

    • @zproger
      @zproger  Год назад

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

  • @mykolavarvarchuk937
    @mykolavarvarchuk937 4 года назад +1

    +++

  • @yochiganai
    @yochiganai 3 месяца назад

    жяваскрипт

  • @s_merq
    @s_merq 2 года назад +1

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

    • @zproger
      @zproger  2 года назад

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

  • @pulsarofsamsara1625
    @pulsarofsamsara1625 Год назад

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

  • @tispoint
    @tispoint 4 года назад +4

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

    • @zproger
      @zproger  4 года назад +1

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

  • @ivanvana
    @ivanvana 3 года назад +4

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

    • @zproger
      @zproger  3 года назад +3

      Уже пишу :D

  • @labbeykayahuseyn2341
    @labbeykayahuseyn2341 2 месяца назад

    Нихрена не понятно, плохо обьяснил, надо другое видео искать, максимум у сайтов бывает div class=... Но никак не div id=...