Как парсить статические Web сайты в Python. Beautiful soup 4

Поделиться
HTML-код
  • Опубликовано: 28 сен 2024
  • Парсить статические web-страницы с помощью библиотеки Beautiful Soup в Python очень легко и весело. Но как обычно есть нюансы. Приступим!
    • Работа с HTTP в Python... - библиотека requests
    #Python #парсинг #beautifulsoup #parse #курс

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

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

    Вот это да. Удивило. Стало интиресно.
    Удачи вам.
    Вы делаете интиресные видео. Очень красиво.

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

      спасибо за отзыв

  • @__m__a__p__c__7578
    @__m__a__p__c__7578 3 года назад +6

    Если можно, хотелось бы видео-урок, как производить авторизацию на сайтах с помощью requests. Спасибо за другие видео-уроки, очень информативные и понятные!

    • @SweetCoder
      @SweetCoder  3 года назад +6

      спасибо за отзыв. да, про авторизацию тема интересная. думаю, что мы до неё обязательно дойдём

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

      @@SweetCoder Спасибо, буду ждать.

    • @АлександрК-ш
      @АлександрК-ш 2 года назад

      @@SweetCoder Уже дошли?

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

    Восторг! Новый шаг вперёд благодаря вашим советам! Спасибо

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

    Я запутался... Когда нужно применять метод find() а когда select() ?

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

    up

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

      какой лаконичный комментарий

  • @Олександр-ю5б
    @Олександр-ю5б 3 года назад +2

    Я пытался писать мини-парсер. Кое что вышло. Но появились вопросы. Например, где может пригодиться команда get.cookies если можно создать сессию и все сделать в ее рамках?

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

      не нравятся куки? - не пользуйся. хотя в куках можно хранить идентификатор прошлой/текущей сессии для пущей секьюрности

    • @Олександр-ю5б
      @Олександр-ю5б 3 года назад

      @@SweetCoder не то что бы не нравятся. Мне, как новичку, пока еще не понятны некоторые нюансы и области применения.
      А за видео спасибо, на некоторые вопросы получил ответ.

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

      @@Олександр-ю5б на здоровье. когда возникнет необходимость в куках - уверен, что ты без труда разберешься. если они пока не нужны - то и переживать не о чем

  • @ЗахарИгнатьев-е3э
    @ЗахарИгнатьев-е3э 3 года назад +1

    Очень интересно и полезно.
    Тем более с утра 6 часов искал решение по парсингу данных с сайта с одинаковыми тегами. Это было порно, но говно-решение получено.
    В итоге это дерево и, как вижу с видео, полезнее изучить доп структуры данных, html плотненько и CSS.
    Буду стараться.
    Спасибо

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

      спасибо за отзыв. удачи!

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

    Всё необходимое для парсинга уже имеется в стандартной библиотеке языка. Для данной задачи достаточно функционала модуля 're'.

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

      парсинг с помощью регуляных выражений не многим отличается от парсинга строковыми функциями. как я и говорил в начале видео, иногда это бывает очень больно. давай сравним: чтобы выбрать "все вторые ячейки из таблицы во втором диве, в которых будут ссылки на страницы клубов", как это показано в видео достаточно выполнить вот этот код:
      td_s = soup.find_all('div',class_='factfileBorder')[1].select('td.team:nth-child(2)')
      а как будет выглядеть реализация на регулярках?
      ну а вообще, конечно, каждому своё )) на вкус и цвет товарища нет. а ещё, можно продолжать ездить на лошадях, изготавливать глиняную посуду, и слать друг другу письма с помощью голубиной почты.
      я уже молчу про генерацию контента

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

      @@SweetCoder После более тщательного изучения исходного кода страницы, итоговый вариант скрипта слегка "похудел":
      html = re.search(r'summary="All clubs".+?

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

      @@minimus91 действительно очень круто. в полезности регулярных выражений нет совершенно никаких сомнений, ибо BeautifulSoup может только html и xml, а регулярки - абсолютно универсальный инструмент. лично я придерживаюсь мнения, что специальный инструмент лучше универсального. [в данном случае] хотя бы из соображений поддерживаемости кода. каюсь, я в регулярных выражениях полный ноль и вынужден опираться на мнения более опытных коллег. например вот такое habr.com/ru/company/piter/blog/300892/ (если будет время и желание). но это тоже не истина в последней инстанции. как я уже говорил: каждому своё. если нравится и весело - то никто не сможет запретить. кроме, конечно, проджект менеджера или тим лида ))

  • @ВадимДейнека-х7с
    @ВадимДейнека-х7с 3 года назад +1

    Я начинаючий програміст, поясніть пж що таке "парсинг".

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

      за великим рахунком - це синтаксичний аналiз даних. в переважнiй кiлькостi випадкiв - це збiр та вiдокремлення крихт цiнної, важливої iнформацiї з величезного масиву даних. наприклад, як в цьому вiдео. з довжелезного тексту HTML коду ми знаходимо та вiдбираємо лише корисну для нас - назви команд, виявивши певну закономiрнiсть розташування цих данных в загальному об'ємi

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

      Це коли в тебе є пул, набір якихось сайтів, з яких тобі треба збирати/парсити якусь інфу.

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

    нежный редактор)

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

      кто?

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

      @@SweetCoder pycharm конечно)

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

      @@BlondinkaQ 😂😂😂👍

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

    Друже ! Хорошо зашёл . давай ещё

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

    очень понятно

  • @ПетрДивнич
    @ПетрДивнич 3 года назад

    Я делал программу парсинга таблиц и проходил все построчно. Долго искал выход.как все упростить. ТОННЫ литературы и гигабайты видео, но тут...Вы... Код сократился в разы! С пасибо!

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

      на здоровье. код короткий, потому что пример очень простой. а что означает "проходил всё построчно"?

    • @ПетрДивнич
      @ПетрДивнич 3 года назад

      @@SweetCoder Я, может. неверно выразился. Я не крутой программист,а использую Пайтон для целей в бизнесе -очень помогает. Ранее я не рассматривал контент как всю таблицу целиком, а высматривал в коде теги -точечно их "выдергивал", потом выстраивал в строку или в столбец, пользуясь кучей if, переводами строк, составление списков, словарей и тд итп. а у Вас ролик 8 минут, из которых чистого кода ну 3 минуты, но эти 3 минуты, как манна небесная -коротко,четко и,что самое главное, применительно совершенно к другим сайтам -РАБОТАЕТ с первого раза (ну естественно кое что подправляя под себя))) да, и как писали ниже в коментах - если не сложно, рассмотрите, пожалуйста. парсинг сайта с авторизацией (то есть если инфа не доступна обычному пользователю, но доступна, когда заходишь по логину и паролю). Единственно, интересно, забанят или нет)))

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

      @@ПетрДивнич ясно. отлично.

  • @АлександрК-ш
    @АлександрК-ш 2 года назад

    Урок не понятен, потому что нет исходника страницы, откуда парсилось, так как в интернете её код уже изменился. А именно не понятно, что куда подставлять, чтобы пройтись по колонке "Клуб" сверху вниз.