Доброго времени суток, уважаемое Habr-сообщество!

Я не являюсь профессионалом в сфере парсинга данных, лишь учусь этому ремеслу в свободное время и посредством производства подобного рода инструкций, хотел бы оставлять для себя же подробные объяснения, что и как работает. Этот материал будет полезен, как мне, так и тем людям, которым также интерес парсинг.

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

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

Первый урок будет посвящен парсингу простых заголовков объявлений с html-страницы агро-ресурса.

Подключение необходимых библиотек

Для этого, нам понадобится.

1. Язык программирования Python

2. Модули Python:

  • requests (для упрощенной работы с HTTP-запросами)

  • BeautifulSoup (анализирует HTML и XML, создает дерево разбора для проанализированных страниц, что далее позволяет извлекать данные из HTML)

  • пакет xml (модуль обработки xml)

Переходим к установке библиотек

Для удобного написания кода на Python, буду использовать IDE ( это программное приложение, которое помогает программистам эффективно разрабатывать программный код. Оно повышает производительность разработчиков, объединяя такие возможности, как редактирование, создание, тестирование и упаковка программного обеспечения в простом для использования приложении.) под названием PyCharm.

1. Открываю PyCharm и перехожу во вкладку “Terminal”. Устанавливаем библиотеку requests командой “pip install requests”

Рис.1. Установка requests
Рис.1. Установка requests

2. Устанавливаем библиотеку BeautifulSoup командой “pip install BeautifulSoup”

Рис.2. Установка BeautifulSoup
Рис.2. Установка BeautifulSoup

3. Устанавливаем пакет xml

Рис.3. Установка xml
Рис.3. Установка xml

Отлично. Все необходимые библиотеки установлены, можем начинать.

Определяемся с целью парсинга

Моей сегодняшней целью является одно из названий объявлений на сайте АгроМер.

Рис.4. Скриншот сайта АгроМер
Рис.4. Скриншот сайта АгроМер

Пишем код

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

Рис.5. Код
Рис.5. Код

Дополнительно разбираемся с кодом

Как видим, получилось вывести заголовок “Подсолнечный шрот”. Опять же, для понимания, прошу обратить внимание на строку № 8.Нужно понять, почему именно мы ведем обращение по тегу “div” и классу “product-card__name”.Открывем код страницы, наведя курсор мыши на заголовок “Подсолнечный шрот” и нажав “Inspect”, на русском это будет команда браузера “просмотреть код”

Рис.6. Сайт АгроМер
Рис.6. Сайт АгроМер

Как видим, искомому нами заголовку “Подсолнечный шрот” соответствует именно тег div и класс product-card__name”, и именно метод “find” (строка кода №8) позволяет найти на странице необходимые нам элементы HTML-страницы.

Рис.7. HTML-код сайта АгроМер
Рис.7. HTML-код сайта АгроМер

Надеюсь, разбор получился понятным. Думаю, эта инструкция поможет мне вспомнить основы при необходимости и вам, если вам также интересен парсинг.Далее, буду также изучать парсинг подробнее и писать новые инструкции. Уверен, моя первая инструкция возможно полна недочетов, но со временем буду стараться для своих читателей делать их лучше и понятнее.

Мой канал в телеграмм

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

канал IT-старт t.me/it_begin

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

Также публикую обзоры книг и интервью на моём сайте https://russia-it.ru

Комментарии (10)


  1. MonkeyWatchingYou
    04.06.2023 19:44
    +1

    Парсинг заголовкой объявлений

    Хабр становится сложным для понимания.


    1. skaynet4788 Автор
      04.06.2023 19:44
      +1

      Исправил, виноват.


  1. GennPen
    04.06.2023 19:44
    +3

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


    1. Robastik
      04.06.2023 19:44

      Справедливости ради:
      1) Полно источников данных без защиты,
      2) Антифингерпринт - отдельная (хотя и связанная) тема.


    1. Prion
      04.06.2023 19:44

      Можно симулировать пользователя через куки, а для разгадывания капчи задействовать сервисы или "индусов". Пока пользователь физически может зайти на ресурс, можно парсить. Парсинг усложнится, но всё-таки быстрее, чем самому ходить и копировать.


  1. bromzh
    04.06.2023 19:44
    +17

    Я не являюсь профессионалом в сфере парсинга данных

    "Но на мой канал вы подписывайтесь"


  1. tososomaru
    04.06.2023 19:44
    +1

    А где парсер?


    1. c_kotik
      04.06.2023 19:44
      +1

      Видимо, на канале. Но не заголовков, а... ну как их... мамонтов!


  1. Andrey_Solomatin
    04.06.2023 19:44

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

    Я бы порекомендавал пока не стремиться к народной любви и потратить это время на практическую и теоретическую подготовку. Когда начинаешь въезжать в тему, знания очень быстро накапливаются и каждый день - это новое открытие. Когда выйдете на плато, тогда самое время систематизровать знания и ими делиться.

    Устанавливаем библиотеку BeautifulSoup командой “pip install BeautifulSoup”

    Хорошим тоном сичтается устанавливать через `pip install -r requeirements.txt`, это не единственный хороший вариант, но один из самых частых.

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


    Что делает строка - можно прочитать из кода. Пишите зачем вы это делаете. Конечно лучше не пишите вообще, а выражайте в именх функций и переменных. Как минимум комментарии нужно вычитать перед публикацией, если их нет то меньше работы.

    Код лучше как текст, картинку цитировать неудобно.

    Роман, еще на картинке можно случайно какие-нибудь персональные данные пошарить.


    1. skaynet4788 Автор
      04.06.2023 19:44

      Андрей, здравствуйте.

      От всей души благодарю вас, согласен со всем.

      В дальнейшем, буду набираться опыта и лишь «по достижению плато» публиковать новый материал. Спасибо!)