Лайфхаки

Маленькие, полезные хитрости

С помощью Python научись парсить ресурсы: простые шаги к мастерству

09.09.2024 в 14:31

С помощью Python научись парсить ресурсы: простые шаги к мастерству

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

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

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

На фриланс-биржах львиную долю заказов составляют именно предложения о написании парсеров. Освоив только на первый взгляд кажущуюся сложной профессию, вы легко сможете зарабатывать пару сотен долларов. Согласитесь, это приятная прибавка к основной работе.

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

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

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

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

Связанные вопросы и ответы:

Вопрос 1: Что такое парсинг ресурсов

Ответ: Парсинг ресурсов - это процесс извлечения данных из веб-страниц или других источников информации. Он позволяет автоматизировать сбор информации и упростить работу с большими объемами данных. В Python существует множество библиотек и инструментов для парсинга, таких как Beautiful Soup, Scrapy, Selenium и другие.

Вопрос 2: Какие библиотеки Python используются для парсинга ресурсов

Ответ: В Python существует множество библиотек для парсинга ресурсов, таких как Beautiful Soup, Scrapy, Selenium, Requests, urllib и другие. Каждая из этих библиотек имеет свои особенности и преимущества, и выбор зависит от конкретной задачи.

Вопрос 3: Как использовать библиотеку Beautiful Soup для парсинга ресурсов

Ответ: Библиотека Beautiful Soup позволяет легко извлекать данные из веб-страниц. Для ее использования необходимо установить библиотеку и импортировать ее в код. Затем можно создать объект Beautiful Soup, передав ему HTML-код страницы. После этого можно использовать методы библиотеки для поиска и извлечения нужных данных.

Вопрос 4: Как использовать библиотеку Scrapy для парсинга ресурсов

Ответ: Библиотека Scrapy - это мощный инструмент для парсинга веб-страниц. Она позволяет создавать пауков, которые могут автоматически извлекать данные из веб-страниц. Для ее использования необходимо установить библиотеку и создать новый проект Scrapy. Затем можно создать новый паук и написать код для извлечения данных.

Вопрос 5: Как избежать блокировки при парсинге ресурсов

Ответ: При парсинге ресурсов могут возникать проблемы с блокировкой IP-адресов. Чтобы избежать этого, можно использовать прокси-серверы, которые позволяют скрыть свой IP-адрес. Также можно использовать библиотеку Selenium, которая позволяет имитировать работу браузера и избежать блокировки.

Вопрос 6: Как извлекать данные из динамических веб-страниц

Ответ: Некоторые веб-страницы используют JavaScript для динамического загрузки контента. Для извлечения данных из таких страниц можно использовать библиотеку Selenium, которая позволяет имитировать работу браузера и дождаться загрузки всего контента. Также можно использовать библиотеку Splash, которая позволяет запускать JavaScript-код и извлекать данные из страниц.

Вопрос 7: Как сохранять данные после парсинга ресурсов

Ответ: После парсинга ресурсов можно сохранять данные в различных форматах, таких как CSV, JSON, XML и других. Для сохранения данных можно использовать библиотеки Python, такие как pandas, json и другие. Также можно использовать базы данных, такие как SQLite, MySQL, PostgreSQL и другие, для хранения больших объемов данных.

Что такое парсинг ресурсов

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

Что такое парсинг ресурсов. Парсинг страницы: сферы применения

Розничный маркетинг

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

Пример

Для электронной коммерции может потребоваться огромное количество изображений и описаний товаров. Их нельзя просто создать за пару-тройку дней, так как даже просто скопировать и вставить каждый займет определенное время. Гораздо проще и быстрее создать парсинг и быстро «выцепить» всё нужное. Или взять аналитику рыночных цен — регулярный парсинг веб-страниц конкурентов поможет своевременно замечать и учитывать все изменения на рынке.

Читать также

Что такое парсинг ресурсов. Парсинг страницы: сферы применения

Как проанализировать контекстную рекламу конкурентов

Бизнес — своего рода постоянный спринт. Здесь важно обогнать как можно больше соперников за короткий промежуток времени. Поэтому анализ ключевых слов рекламной …

Еще

Анализ рынка акций

Раньше анализ фондового рынка ограничивался изучением финансовой отчетности компаний и, соответственно, инвестированием в наиболее подходящие ценные бумаги. Сегодня каждая новость или изменения настроений в обществе или геополитике важны для определения текущих трендов. Как получать такие данные? Здесь помогает парсинг. Он позволяет получить всю информацию о настроениях фондового рынка и увидеть общую картину. К тому же проще и быстрее извлекать годовые отчеты и все стандартные финансовые данные с любого сайта с помощью парсинга, а не вручную.

Машинное обучение

По сути каждый парсер проходит обучение. Это позволяет ему обнаруживать закономерности. Однако чтобы установить нужные связи, необходимо передать в «компьютерный разум» много данных и помочь связать одно с другим. Часто парсеры применяются в технологиях AI, чтобы обеспечить регулярный поток обучающей информации.

Парсер почты

Что это такое? Парсинг электронной почты позволяет анализировать входящие и исходящие сообщения. Затем их содержимое можно обработать и интегрировать в различные приложения c помощью программного интерфейса API.

Электронная почта — одна из наиболее загруженных данными форм современного общения. Обычная отправка одного электронного письма собирает, передает и интерпретирует около 100 Кб данных. Если умножить на миллиарды писем, можно понять, почему компаниям сложно управлять такими объемами информации, обрабатывать ее и искать нужные им сведения. Решение проблемы сегодня берут на себя специальные парсеры.

Читать также

В этой статье мы расскажем о секретах создания эффективной email-рассылки и разберем ключевые вопросы: Цели и результаты email-рассылки. Целевая аудитория и база …

Еще

Большинство компаний применяет решения на основе API для 3 основных видов приложений.

  1. Поддержка клиентов . Парсинг обеспечивает фиксацию взаимодействий с клиентами по электронной почте, доставку нужных сообщений пользователям, сбор и анализ входящих сообщений для хранения и отображения в приложениях поддержки.
  2. Приложения для управления взаимоотношениями с клиентами, CRM . Приложения CRM часто записывают всю переписку с клиентом, чтобы сохранились ценные данные из истории взаимоотношений. А направляя ответы клиентов через систему парсинга, приложения CRM могут получать предварительно проанализированные данные.
  3. Социальные приложения . Приложения для соцсетей часто позволяют общаться по электронной почте, чтобы облегчить пользователям отслеживание беседы. Парсинг входящей почты — простой и быстрый способ настроить почтовые приложения так, чтобы они росли по мере масштабирования переписки в соцсетях.

Какие библиотеки Python используются для парсинга ресурсов


Для отправки http-запросов есть немало python-библиотек, наиболее известные urllib/urllib2 и Requests. На мой вкусудобнее и лаконичнее, так что, буду использовать ее.Также необходимо выбрать библиотеку для парсинга html, небольшой research дает следующие варианты:
  • re
    Регулярные выражения, конечно, нам пригодятся, но использовать только их, на мой взгляд, слишком хардкорный путь, и они немного не для этого . Были придуманы более удобные инструменты для разбора html, так что перейдем к ним.
  • BeatifulSoup , lxml
    Это две наиболее популярные библиотеки для парсинга html и выбор одной из них, скорее, обусловлен личными предпочтениями. Более того, эти библиотеки тесно переплелись: BeautifulSoup стал использовать lxml в качестве внутреннего парсера для ускорения, а в lxml был добавлен модуль soupparser. Подробнее про плюсы и минусы этих библиотек можно почитать в обсуждении . Для сравнения подходов я буду парсить данные с помощью BeautifulSoup и используя XPath селекторы в модуле lxml.html.
  • scrapy
    Это уже не просто библиотека, а целый open-source framework для получения данных с веб-страниц. В нем есть множество полезных функций: асинхронные запросы, возможность использовать XPath и CSS селекторы для обработки данных, удобная работа с кодировками и многое другое (подробнее можно почитать тут ). Если бы моя задача была не разовой выгрузкой, а production процессом, то я бы выбрала его. В текущей постановке это overkill.

Как создать парсер ресурсов с помощью Python

Интернет, пожалуй, самый большой источник информации (и дезинформации) на планете. Самостоятельно обработать множество ресурсов крайне сложно и затратно по времени, но есть способы автоматизации этого процесса. Речь идут о процессе скрейпинга страницы и последующего анализа данных. При помощи этих инструментов можно автоматизировать сбор огромного количества данных. А сообщество Python создало несколько мощных инструментов для этого. Интересно? Тогда погнали!

И да. Хотя многие сайты ничего против парсеров не имеют, но есть и те, кто не одобряет сбор данных с их сайта подобным образом. Стоит это учитывать, особенно если вы планируете какой-то крупный проект на базе собираемых данных.

С сегодня я предлагаю попробовать себя в этой интересной сфере при помощи классного инструмента под названием(Красивый суп?). Название начинает иметь смысл если вы хоть раз видели HTML кашу загруженной странички.

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

Этот гайд я написал под вдохновением и впечатлением от подобного на сайте, так что многие моменты и примеры совпадают, но содержимое и определённые части были изменены или написаны иначе, т.к. это не перевод. Оригинал:.

Этот сайт прост и понятен. Там есть список данных, которые нам и нужно будет вытащить из загруженной странички.

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

Главным инструментом в браузере для вас станет Инспектор страниц. В браузерах на базе хромиума его можно запустить вот так:

Он отображает полный код загруженной странички. Из него же мы будем извлекать интересующие нас данные. Если вы выделите блоки html кода, то при помощи подсветки легко сможете понять, что за что отвечает.

Ладно, на сайт посмотрели. Теперь перейдём в редактор.

Пишем код парсера для Fake Python

Для работы нам нужно будет несколько библиотек: requests и beautifulsoup4 . Их устанавливаем через терминал при помощи команд:

и

После чего пишем следующий код:

Тут мы импортируем новые библиотеки. URL это строка, она содержит ссылку на сайт. При помощи requests.get мы совершаем запрос к веб страничке. Сама функция возвращает ответ от сервера (200, 404 и т.д.), а page.content предоставляет нам полный код загруженной страницы. Тот же код, который мы видели в инспекторе.

Какие типы данных можно получить с помощью парсинга ресурсов

  • Цена на товары или услуги конкурентов. Для коммерческих порталов, интернет-магазинов, товарных электронных каталогов очень важно поддерживать рыночные цены, ориентируясь на ведущих конкурентов своей ниши. Для сбора нужной информации можно парсить данные сайтов конкурентов и корректировать ценовые предложения под рыночные.
  • Товарные позиции или категории. Для того чтобы скопировать данные о продукции (названия, описания свойств и характеристик, артикулы и фотографии карточек товаров) с сайтов поставщиков, можно применить парсинг данных и с помощью таких инструментов выгрузить необходимую информацию в свой онлайн-магазин.
  • Мета-данные. Информация о title, description и других метаданных может требоваться SEO-специалистам для анализа интернет-продвижения.
  • Технические ошибки. Парсер сайтов позволяет собирать информацию о наличии страниц с ошибкой 404, редиректах, неработающих и «битых» ссылках и т. д.

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

Какие типы данных можно получить с помощью парсинга ресурсов. Какие данные можно собирать с помощью программ-парсеров («белый» парсинг)

Как обработать ошибки при парсинге ресурсов

Проблема с нетабличными данными

С загрузкой в Excel табличных данных из интернета проблем нет. Надстройка Power Query в Excel легко позволяет реализовать эту задачу буквально за секунды. Достаточно выбрать на вкладке Данные команду Из интернета (Data - From internet) , вставить адрес нужной веб-страницы (например, ключевых показателей ЦБ ) и нажать ОК :

Power Query автоматически распознает все имеющиеся на веб-странице таблицы и выведет их список в окне Навигатора :

Дальше останется выбрать нужную таблицу методом тыка и загрузить её в Power Query для дальнейшей обработки (кнопка Преобразовать данные ) или сразу на лист Excel (кнопка Загрузить ).

Если с нужного вам сайта данные грузятся по вышеописанному сценарию - считайте, что вам повезло.

К сожалению, сплошь и рядом встречаются сайты, где при попытке такой загрузки Power Query "не видит" таблиц с нужными данными, т.е. в окне Навигатора попросту нет этих Table 0,1,2… или же среди них нет таблицы с нужной нам информацией. Причин для этого может быть несколько, но чаще всего это происходит потому, что веб-дизайнер при создании таблицы использовал в HTML-коде страницы не стандартную конструкцию с тегом

, а её аналог - вложенные друг в друга теги-контейнеры
. Это весьма распространённая техника при вёрстке веб-сайтов, но, к сожалению, Power Query пока не умеет распознавать такую разметку и загружать такие данные в Excel.

Тем не менее, есть способ обойти это ограничение ;)

В качестве тренировки, давайте попробуем загрузить цены и описания товаров с маркетплейса Wildberries - например, книг из раздела Детективы :

Загружаем HTML-код вместо веб-страницы

Сначала используем всё тот же подход - выбираем команду Из интернета на вкладке Данные (Data - From internet) и вводим адрес нужной нам страницы:

После нажатия на ОК появится окно Навигатора , где мы уже не увидим никаких полезных таблиц, кроме непонятной Document :

Дальше начинается самое интересное. Жмём на кнопку Преобразовать данные (Transform Data) , чтобы всё-таки загрузить содержимое таблицы Document в редактор запросов Power Query. В открывшемся окне удаляем шаг Навигация (Navigation) красным крестом:

… и затем щёлкаем по значку шестерёнки справа от шага Источник (Source) , чтобы открыть его параметры:

В выпадающием списке Открыть файл как (Open file as) вместо выбранной там по-умолчанию HTML-страницы выбираем Текстовый файл (Text file) . Это заставит Power Query интерпретировать загружаемые данные не как веб-страницу, а как простой текст, т.е. Power Query не будет пытаться распознавать HTML-теги и их атрибуты, ссылки, картинки, таблицы, а просто обработает исходный код страницы как текст.

После нажатия на ОК мы этот HTML-код как раз и увидим (он может быть весьма объемным - не пугайтесь):

Ищем за что зацепиться

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

В случае с Wildberries, промотав этот код вниз до товаров, можно легко нащупать простую логику:

  • Строчки с ценами всегда содержат метку lower-price
  • Строчки с названием бренда - всегда с меткой brand-name c-text-sm
  • Название товара можно найти по метке goods-name c-text-sm

Иногда процесс поиска можно существенно упростить, если воспользоваться инструментами отладки кода, которые сейчас есть в любом современном браузере. Щёлкнув правой кнопкой мыши по любому элементу веб-страницы (например, цене или описанию товара) можно выбрать из контекстного меню команду Инспектировать (Inspect) и затем просматривать код в удобном окошке непосредственно рядом с содержимым сайта:

Фильтруем нужные данные

Теперь совершенно стандартным образом давайте отфильтруем в коде страницы нужные нам строки по обнаруженным меткам. Для этого выбираем в окне Power Query в фильтре опцию Текстовые фильтры - Содержит (Text filters - Contains) , переключаемся в режим Подробнее (Advanced) и вводим наши критерии:

Добавление условий выполняется кнопкой со смешным названием Добавить предложение . И не забудьте для всех условий выставить логическую связку Или (OR) вместо И (And) в выпадающих списках слева - иначе фильтрация просто не сработает.

После нажатия на ОК на экране останутся только строки с нужной нам информацией:

Чистим мусор

Останется почистить всё это от мусора любым подходящим и удобным лично вам способом (их много). Например, так:

  1. Удалить заменой на пустоту начальный тег: через команду Главная - Замена значений (Home - Replace values) .
  2. Разделить получившийся столбец по первому разделителю " > " слева командой Главная - Разделить столбец - По разделителю (Home - Split column - By delimiter) и затем ещё раз разделить получившийся столбец по первому вхождению разделителя "
  3. Удалить лишние столбцы, а в оставшемся заменить стандартную HTML-конструкцию " на нормальные кавычки.
В итоге получим наши данные в уже гораздо более презентабельном виде:

Разбираем блоки по столбцам

Если присмотреться, то информация о каждом отдельном товаре в получившемся списке сгруппирована в блоки по три ячейки. Само-собой, нам было бы гораздо удобнее работать с этой таблицей, если бы эти блоки превратились в отдельные столбцы: цена, бренд (издательство) и наименование.

Как сохранить полученные данные после парсинга ресурсов

На ресурсе ras.arbitr.ru имеется более миллиона документов, мне нужно получить парсингом их содержимое.
Я написал простенький скрипт на python. Поиск на их сайте сделан через отправку POST заголовков. Но стоит мне начать работу скрипта, ресурс меня блокирует и на их сайт я не могу зайти 1 день, пишет "Защита системы по вашему IP от скриптов"
Заголовки отсылаю скопированные с Chrome dev tool.
Пробовал рандомные куки ставить в значения - не помогает.
Как можно обойти блокировку? Буду очень благодарен кто подскажет.

Как избежать блокировки при парсинге ресурсов


Парсер — это программа, сервис или скрипт, который собирает данные с указанных веб-ресурсов, анализирует их и выдает в нужном формате.

С помощью парсеров можно делать много полезных задач:

  • Цены . Актуальная задача для интернет-магазинов. Например, с помощью парсинга вы можете регулярно отслеживать цены конкурентов по тем товарам, которые продаются у вас. Или актуализировать цены на своем сайте в соответствии с ценами поставщика (если у него есть свой сайт).
  • Товарные позиции : названия, артикулы, описания, характеристики и фото. Например, если у вашего поставщика есть сайт с каталогом, но нет выгрузки для вашего магазина, вы можете спарсить все нужные позиции, а не добавлять их вручную. Это экономит время.
  • Метаданные : SEO-специалисты могут парсить содержимое тегов title, description и другие метаданные.
  • Анализ сайта . Так можно быстро находить страницы с ошибкой 404, редиректы, неработающие ссылки и т. д.

Для справки . Есть еще серый парсинг. Сюда относится скачивание контента конкурентов или сайтов целиком. Или сбор контактных данных с агрегаторов и сервисов по типу Яндекс.Карт или 2Гис (для спам-рассылок и звонков). Но мы будем говорить только о белом парсинге, из-за которого у вас не будет проблем.

Где взять парсер под свои задачи

Есть несколько вариантов:

  1. Оптимальный — если в штате есть программист (а еще лучше — несколько программистов). Поставьте задачу, опишите требования и получите готовый инструмент, заточенный конкретно под ваши задачи. Инструмент можно будет донастраивать и улучшать при необходимости.
  2. Воспользоваться готовыми облачными парсерами (есть как бесплатные, так и платные сервисы).
  3. Десктопные парсеры — как правило, программы с мощным функционалом и возможностью гибкой настройки. Но почти все — платные.
  4. Заказать разработку парсера «под себя» у компаний, специализирующихся на разработке (этот вариант явно не для желающих сэкономить).

Первый вариант подойдет далеко не всем, а последний вариант может оказаться слишком дорогим.

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

Законно ли парсить данные?

В законодательстве РФ нет запрета на сбор открытой информации в интернете. Право свободно искать и распространять информацию любым законным способом закреплено в четвертом пункте 29 статьи Конституции.

Допустим, вам нужно спарсить цены с сайта конкурента. Эта информация есть в открытом доступе, вы можете сами зайти на сайт, посмотреть и вручную записать цену каждого товара. А с помощью парсинга вы делаете фактически то же самое, только автоматизированно.

Но если вы хотите собрать персональные данные пользователей и использовать их для email-рассылок или таргетированной рекламы, это уже будет незаконно (эти данные защищены законом о персональных данных ).

Как избежать блокировки при парсинге ресурсов

Чтобы избежать блокировки при парсинге ресурсов, необходимо следовать нескольким правилам:

1. Изучите политику ресурса

Прежде чем начать парсинг, изучите политику ресурса, которую можно найти в разделе "Пользовательское соглашение" или "Политика конфиденциальности". Если ресурс запрещает парсинг, то лучше отказаться от этой идеи.

2. Используйте User-Agent

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

3. Не превышайте лимит запросов

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

4. Используйте прокси-серверы

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

5. Не парсите слишком часто

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

6. Используйте белый парсинг

Белый парсинг - это парсинг, который разрешен ресурсом. Если вы используете белый парсинг, вы не рискуете быть заблокированным.

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