Парсинг простых сайтов на Python: BeautifulSoup, requests

Поділитися
Вставка
  • Опубліковано 11 тра 2024
  • В этом видео я покажу как можно собрать информацию с простых сайтов с помощью BeautifulSoup и requests, писать будем как всегда на Python.
    BeautifulSoup - это замечательная библиотека, которая значительно ускоряет и упрощает сбор данных, те кто занимаются парсингом просто обязаны уметь ею пользоваться
    Исходный код:
    github.com/Duff89/glavsnab_pa...
    Приватные прокси за 99 руб: proxy6.net/?r=54545
    Купон на скидку: SdSq8wCwJA
    proxyline.net/?ref=212089
    Купон для скидки: EYvdLcmgSy4tUcBP5uk
    Поддержать канал:
    yoomoney.ru/to/410014382689862
    или
    2204 1201 0103 5539
    Контакт для связи: sergeichopolovich1989@gmail.com
    00:00 Вступление
    01:25 Что такое BeautifulSoup
    02:00 Изучаем сайт для парсинга
    03:03 Установка зависимостей
    04:17 Пишем код
    24:44 Итоговый запуск
    #python #parsing #scraping #request #html #интернетмагазин #beautifulsoup #парсинг

КОМЕНТАРІ • 97

  • @vrstatick7273
    @vrstatick7273 7 місяців тому

    Очень интересно и информативно

  • @rostikkigi4275
    @rostikkigi4275 7 місяців тому +5

    доброго времени суток!
    Подписан и посмотрел почти все видео с канала!Очень информативно и доходчиво даже для нубов подобных мне)
    Спасибо за ваш труд!

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      Спасибо!

    • @rostikkigi4275
      @rostikkigi4275 7 місяців тому

      @@the_parse_hub с первого заказа задоначу))

  • @user-ld3yu9uy7v
    @user-ld3yu9uy7v 8 місяців тому +1

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

    • @the_parse_hub
      @the_parse_hub  8 місяців тому +2

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

  • @user-mf8wx6sv7o
    @user-mf8wx6sv7o 7 місяців тому

    Спасибо за ваш труд!

  • @LifterAndy
    @LifterAndy 6 місяців тому +1

    Спасибо за Вашу работу.

  • @sergeyk39
    @sergeyk39 6 місяців тому

    Большое спасибо, очень интересно!

  • @alexanderkomanov4151
    @alexanderkomanov4151 7 місяців тому

    Классно!

  • @Embrace777
    @Embrace777 6 місяців тому

    Подписался) Очень полезно) Спасибо!

  • @DayZDrag
    @DayZDrag 6 місяців тому +1

    начал изучать парсинг, жёстко тупил и путался из-за не структуированного и как попало написанного кода, щас увидел твою структуру и всё резко стало понятно и просто, парсинг это работа с многочисленным количеством разных данных, чтобы не запутаться чуть ли не обязательно нужно писать структуированный код, в принпице во всём программировании структуированный код - понятный код

  • @Vladimir_F609
    @Vladimir_F609 8 місяців тому

    Спасибо большое за годный видос! С bs4 знаком, но всё равно что-то полезное находится 👍

  • @ON-ie1ib
    @ON-ie1ib 6 місяців тому

    Супер информативное видео. Хорошая работа

  • @BorisVP1967
    @BorisVP1967 8 місяців тому +2

    Подписан. Прокомментирую для продвижения канала.
    В отличие от широкого ряда других авторов каналов на подобные темы, понятная подача материала.
    В принципе даже для меня, далеко не молодого человека, в том случае, если многократно повторю действие и буду одновременно его проговаривать, есть шанс понять происходящее, саму логику написания программ, которые способны последовательно осуществлять действия и даже вдумчиво и с толком запустить тот парсер, который нужен. Выбрать-бы ещё время для этого.

  • @biglakecom
    @biglakecom 2 місяці тому

    блин чётко👍

  • @aisultanbaltabaev2053
    @aisultanbaltabaev2053 8 місяців тому +1

    👍

  • @cape4129
    @cape4129 Місяць тому

    ТОп вообще огонь канал

  • @abc_chess
    @abc_chess 8 місяців тому +1

    Полезное видео, странно что просмотров мало. Баловался с парсером полгода назад, основная проблема(я новичок) когда я циклом обходил каждую ссылку на товар и тянул данные, то не смог настроить скрипт так, чтобы эти данные последовательно записывались в эксель файл😢

    • @the_parse_hub
      @the_parse_hub  8 місяців тому +1

      Спасибо. Насчет просмотров: канал относительно новый, всё впереди.
      Насчет последовательной записи: нужно использовать контекстный менеджер with, чтобы случайно не заблокировать файл, ну и стараться писать не по одной записи а блоками

  • @kostyanmsk9493
    @kostyanmsk9493 5 місяців тому +1

    Спасибо тебе огромное, очень понятно объясняешь, продолжай радовать контентом)))
    P. S: а можешь рассказать про динамический парсинг? (В экселе так можно) и про применение, например как создать файл, для обученмя бесплаиной модели? Как можно динамически парсить различные данные в этот файл что бы модель автоматически дообучалась? Возможно ли это? Было бы очень интерестно, так как тебя понятно воспринимать и слушать

    • @the_parse_hub
      @the_parse_hub  5 місяців тому

      Спасибо!
      Насчет Excel и нейросетей, я в них далеко не специалист, поэтому пока этим порадовать не смогу

  • @Chel1k7
    @Chel1k7 6 місяців тому

    сайт очень добрый к парсингу, редкость такое

    • @the_parse_hub
      @the_parse_hub  6 місяців тому

      Таких сайтов на самом деле много, не всегда есть смысл как-то защищать данные

  • @user-fv6wz9hd5l
    @user-fv6wz9hd5l 4 місяці тому

    в целом соблюдая логику видео, и использую другой раздел сайта все получилось реализовать без не решаемых проблем.
    занимаюсь питоном по 4 каналам параллельно, за 1.5 месяца по выходным ( 40% месяца по 4-5 часов) свитчер 36 лет. дошел до ооп, решил сделать парсер как подведение итогов по функциональному. Спасибо автору.
    1 замечание - перед началом подобного видео указывайте настройки исходной среды. на разных версиях продуктов или не скачанных надстройках, типа lxml, могут быть проблемы

    • @the_parse_hub
      @the_parse_hub  4 місяці тому

      Ну насчет lxml и остальных зависимостей я это показывал в видео: ua-cam.com/video/1dzbC4xRIXw/v-deo.html

  • @EarnDevison
    @EarnDevison 7 місяців тому +1

    сделай пожалуйста видео на нажатие динамических кнопок playwright. которые меняются при наводке курсором

    • @the_parse_hub
      @the_parse_hub  7 місяців тому +2

      Отдельное видео это будет наверное слишком, проще отвечу прямо здесь:
      Вот примерная логика:
      # находим элемент и забираем у него координаты
      box = page.get_by_role("button").bounding_box()
      # перемещаем курсор на середину этого элемента
      page.mouse.move(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)
      # здесь нужно добавить ожидание, нового текста кнопки, класса или чего-то еще
      # клик
      page.mouse.click(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)

    • @EarnDevison
      @EarnDevison 7 місяців тому

      @@the_parse_hub а если эта кнопка не элемент button а типа span или div? есть может Telegram чат?
      upd: ааа. кликом мышки отчаливая от ближайшего элемента..

  • @maxd.578
    @maxd.578 8 місяців тому +1

    Крутой видос! А что если у нужного нам тега класс не с читаемым названием (div, class_='product-card'), а например такой какой-нибудь? 'col-lg-3 col-md-4 col-sm-6 col-xs-6 col-xxs-12 item item-parent catalog-block-view__item js-notice-block item_block'. Как быть?

    • @the_parse_hub
      @the_parse_hub  8 місяців тому +4

      Спасибо.
      Насчет нужного селектора: бывают такие сложные моменты, особенно где названия классов генерируются (привет озону). Но почти всегда можно выйти на нужный элемент через его родителей\соседей или просто использовать какой-то один уникальный класс или атрибут, в твоём примере ".catalog-block-view__item" выглядит довольно нормальным

  • @ru8954
    @ru8954 7 місяців тому

    Добрый день! Не поможете советом? Мне нужно спарсить из интернет магазина все товары, которые там есть. Я так понимаю requests + bs4 в этом случае лучший вариант по скорости и удобству? И еще вопрос по поводу блокировки бота, она же возможна, ее как-то можно избежать? Может быть вы имели подобный опыт или есть совет, как это лучше реализовать?

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      Эх, если бы всё было так просто, то этого канала не было бы)
      Всё зависит от сайта, поэтому какой-то внятный совет не могу дать

    • @ru8954
      @ru8954 7 місяців тому

      @@the_parse_hub Мне это нужно в рамках учебного проекта, поэтому не особо важно какой это будет магазин. Например dns

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      @@ru8954 Возьмите тогда rdstroy.ru/. Там точно можно парсить через requests и bs4,защиты нет, недавно проверял

  • @user-ou1eb3cn9z
    @user-ou1eb3cn9z 5 місяців тому

    price можно в try - exept обработать

  • @rikenbaker1
    @rikenbaker1 2 місяці тому

    Видео супер! Спасибо!
    Обратите внимание, что когда открывает получившийся файл на 16:35, внизу вкладка data и вот в ней всё в столбцах.
    У меня открылось в первой вкладке text, голову ломал что не так сделал.

    • @the_parse_hub
      @the_parse_hub  2 місяці тому

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

  • @BorisVP1967
    @BorisVP1967 8 місяців тому

    16:40
    Судя по информации из "Инспектора" браузера, лучшим решением для проверки , наверное всё-же явилось-бы, считывать информацию о количестве товаров из атрибутов, которые доступны:
    Раковины
    581
    Так на сегодня "раковин" 581, в то время, как на момент съёмки видео их было 587.
    При этом возможно считать заведомо ложным утверждение о том, что когда-то товаров под каталожным названием "Раковины", не станет больше 587 (пятисот восьмидесяти семи). То есть проверка количества по атрибутам, наверное всё-же более правильное решение для автоматизации задачи, в том случае, если сама задача не разовая.

    • @the_parse_hub
      @the_parse_hub  7 місяців тому +1

      Согласен. Но вариант с учётом дублей мне больше по душе

  • @user-fv6wz9hd5l
    @user-fv6wz9hd5l 4 місяці тому

    При открытии полученного файла кодировки пайчарма спрашивают что выбрать, при открытии файла в текст выдаются ошибки, какую кодировку стоит использовать? пишет что .csv только на проф версии пайчарма, есть вариация чем корректно его открыть в среде пайчарм без проф версии?

    • @the_parse_hub
      @the_parse_hub  4 місяці тому

      Насчёт кодировки, многое зависит от операционной системы.
      Как нормально (в табличном виде) открыть csv в бесплатной версии - наверное никак.
      В крайнем случае, можете найти где скачать "бесплатную" про версию и использовать полный функционал или переписать немного кода и сохранять результат в формате xlsx например

  • @user-gq5pm4wu4v
    @user-gq5pm4wu4v 7 місяців тому

    Здравствуйте! А вы не сталкивались с блокировкой на wildberries? После нескольких часов парсинга выдает код 429, значит заблокировали. И приватные прокси не помогают. И не могу дальше парсить.

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      Добрый день. 429 это значит слишком частые запросы, это не блокировка. В ВБ возникает обычно когда идет парсинг страницы примерно > 30. Видимо считается, что настоящий пользователь до этого не дойдет никогда. Попробуйте делать повторный запрос, до 50-60-й страницы это обычно помогает

    • @user-gq5pm4wu4v
      @user-gq5pm4wu4v 7 місяців тому

      @@the_parse_hub попробовал. Действительно, если снова начать с первой страницы, то идёт.
      Спасибо вам большое!

  • @Tribunall
    @Tribunall 6 місяців тому

    Паршу 2 сайта для сравнение цен, где лучше сохранять данние для сравнения (json, sqlite) или в чем?

    • @the_parse_hub
      @the_parse_hub  6 місяців тому

      Sqlite вполне нормальная бд для таких целей

    • @Tribunall
      @Tribunall 6 місяців тому

      @@the_parse_hub спасибо за подказку

  • @Andriyklm9
    @Andriyklm9 7 місяців тому +1

    сделай пж видео о том как пройти recaptcha v2 callback на selenium

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      В планах есть такое

  • @vrstatick7273
    @vrstatick7273 7 місяців тому

    Интересна тема обход различных блокировок при отправке post запросов

    • @the_parse_hub
      @the_parse_hub  7 місяців тому +1

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

  • @Enthe0genic
    @Enthe0genic 7 місяців тому

    Почему может выводить None при первой (8:12-8:26) проверке?

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      Значит такой элемент не найден. Возможно неправильно записан селектор

    • @Enthe0genic
      @Enthe0genic 7 місяців тому

      @@the_parse_hub спасибо, нашла ошибку)

  • @MUSRB
    @MUSRB 7 місяців тому

    почему не сохраняет в отдельный столбпец?

    • @the_parse_hub
      @the_parse_hub  7 місяців тому

      Не знаю про что вопрос, но наверное пропущена запятая где-то в функции записи

    • @MUSRB
      @MUSRB 7 місяців тому

      @@the_parse_hub with open(f'eprr.csv', mode='w', newline='', encoding='utf-8') as fie:
      writer = csv.writer(fie)
      writer.writerow(['name',
      'price'])

  • @IamZAS
    @IamZAS 5 місяців тому

    Привет!
    Спасибо за объяснение, супер!
    НО у меня небольшая ошибка, на текущий момент раковин = 832, показывать элементов на сайте стоит по 100. Парсит нормально, но показывает в выводе консоли всего 9 страниц, хотя на сайте 11 страниц. Можешь подсказать где моя ошибка?

    • @the_parse_hub
      @the_parse_hub  5 місяців тому +1

      Нужно выводить отладочную информацию и смотреть, так сказать не могу

    • @IamZAS
      @IamZAS 5 місяців тому

      @@the_parse_hub
      Я вроде разобрался, там сайт кривой. (на мой взгляд)

    • @the_parse_hub
      @the_parse_hub  5 місяців тому +1

      @@IamZAS такое тоже бывает)

  • @AnimationLook
    @AnimationLook 4 місяці тому

    Привет, можешь сделать инструкцию, как получать har файлы со траниц с помощью playwright? Еще можно browsermob + selenium разобрать, но мне кажется это уже устаревающая связка

    • @the_parse_hub
      @the_parse_hub  4 місяці тому

      Вот официальная инструкция, по-моему нормально расписано: playwright.dev/python/docs/mock#mocking-with-har-files

    • @AnimationLook
      @AnimationLook 4 місяці тому

      @@the_parse_hub Да, это я уже все читал, но все равно не получается. Поэтому я подумал, что инструкция по этой штуке будет неплохим контентом

    • @the_parse_hub
      @the_parse_hub  4 місяці тому

      @@AnimationLook Это будет в курсе по Playwright, но когда он будет готов для меня большой вопрос

  • @millera6656
    @millera6656 6 місяців тому

    Добрый день!
    при наборе: sku = product.find("span", class_="product-card_key").text
    print(sku), и после запуска программы выдает ошибку : sku = product.find("span", class_="product-card_key").text
    AttributeError: 'NoneType' object has no attribute 'text'
    скажите пожайлуста что не так?

    • @the_parse_hub
      @the_parse_hub  6 місяців тому

      sku = product.find("span", class_="product-card_key")
      Здесь идет поиск какого-то элемента, если элемент не найден, то функция вернет None, далее идет попытка у этого элемента взять значение атрибута text и конечно у None не может быть такого атрибута.
      Скорее всего неправильно записан селектор: class_="product-card_key", проверяем на сайте - точно там class_ = "product-card__key" (Двойное нижнее подчеркивание)

  • @polskapospolity1834
    @polskapospolity1834 6 місяців тому

    Можно, пожалуйста разъясните: у меня в VScode кариллица отображается знаками вопроса. Как мне настроить кодировку?

    • @the_parse_hub
      @the_parse_hub  6 місяців тому +1

      пропишите кодировку, к примеру: open(f"glavsnab.csv", mode="w", newline="", encoding="utf-8")

    • @polskapospolity1834
      @polskapospolity1834 6 місяців тому

      @@the_parse_hub теперь в csv файле вообще нет данных. Вообще это не очень большая проблема, тк эксель прекрасно читает эти файлы. Просто ради интереса узнаю

  • @alexandrchur5665
    @alexandrchur5665 5 місяців тому

    Здравствуйте! Подскажите, как написать такого бота, который бы "слушал" несколько чатов в Телеграм и пересылал сообщения в личку по каким-то ключевым словам? К примеру, я занимаюсь строительством и ремонтом, и надо первым получать предложения в чатах своего города, если кто-то ищет строителя.

    • @the_parse_hub
      @the_parse_hub  5 місяців тому +1

      Добрый день! Начните с этого: skillbox.ru/media/code/parsim-dannye-v-telegram-na-python-chast-1/

    • @alexandrchur5665
      @alexandrchur5665 5 місяців тому

      @@the_parse_hub Это уже посмотрел, спасибо! Но там парсинг используется, чтобы просматривать сообщения в чате, а как сделать, чтобы бот "слушал" сообщение в текущем времени, чтобы успеть первым ответить потенциальному клиенту?

    • @the_parse_hub
      @the_parse_hub  5 місяців тому +1

      @@alexandrchur5665 к примеру так: habr.com/ru/articles/425151/

    • @alexandrchur5665
      @alexandrchur5665 5 місяців тому

      @@the_parse_hub Большое спасибо! )

    • @alexandrchur5665
      @alexandrchur5665 5 місяців тому

      @@the_parse_hub У меня ещё вопрос. В статье описывается сохранение новых сообщений в файл на ПК, но не всегда есть возможность иметь ПК под рукой на котором запущен бот. Подскажите, как настроить перенаправление сообщений в телеграм-клиент на телефон?

  • @anus8346
    @anus8346 7 місяців тому

    не по теме ролика конечно
    хочется увидеть видео о решении callback капчи с помощью rucaptcha
    в интернете нет объяснений как это сделать

  • @mhalev
    @mhalev 6 місяців тому

    А в ссылке ?limit=600 нельзя было указать? :)

    • @the_parse_hub
      @the_parse_hub  6 місяців тому

      Указать можно, только работать не будет) На лимиты тоже есть лимиты

  • @gosros662
    @gosros662 6 місяців тому

    Почему я не понял? Чувствую себя тупым

    • @the_parse_hub
      @the_parse_hub  6 місяців тому

      Если какой-то момент непонятен - могу прояснить

  • @user-ld3yu9uy7v
    @user-ld3yu9uy7v 8 місяців тому +1

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

    • @the_parse_hub
      @the_parse_hub  8 місяців тому +2

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

    • @user-pk7le8he2r
      @user-pk7le8he2r 8 місяців тому

      Видео отличное! Узнал ряд новых вещей про bs4. а в чем здесь преимущество использования датаклассов, перед, например, банальным списком словарей?@@the_parse_hub