{"id":13758,"url":"\/distributions\/13758\/click?bit=1&hash=2e8fbaa3bf90573ffccd5ba50e92f317e1b2150766c409b747f9bc25b4cf1eb8","title":"\u041c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0441\u043b\u0443\u0433 ","buttonText":"\u042d\u0442\u043e \u043a\u0430\u043a?","imageUuid":"06dd1ba1-1f1b-50d7-87e0-bba4328182c5","isPaidAndBannersEnabled":false}

Лучшие парсеры 2022 года с открытым исходным кодом

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

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

20 млн рублей в год на парсинге сайтов. Часть 2

Меня зовут Максим Кульгин, моя компания xmldatafeed занимается парсингом сайтов в России порядка четырёх лет. Ежедневно мы парсим более 500 крупнейших интернет-магазинов в России. Теперь делимся опытом.

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

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

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

Итак, вот список лучших представителей парсинга из мира открытого ПО:

1. Scrapy

Scrapy — это целый фреймворк. И, как оказалось, самый лучший для парсинга. Тому есть несколько причин.

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

Scrapy позволяет разрабатывать высокоэффективные поисковые роботы и парсеры. Разработчики всегда уделяли внимание скорости — можно быстро разработать парсер и сразу же начать сканировать Интернет для извлечения данных. Ещё одна положительная черта Scrapy — способность эффективно справляться с большими проектами.

Имеется возможность выбрать формат для сохранения данных, используя, например, JSON или CSV. Scrapy включает в себя не только инструменты парсинга, но и библиотеку HTTP, что лишний раз делает его предпочтительным по сравнению с другими аналогичными решениями.

Преимущества:

• подробная документация, что сильно облегчает работу;

• неограниченные ресурсы;

• дружелюбное сообщество разработчиков, всегда готовых предложить помощь.

2. Heritrix

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

Это поисковый робот с открытым исходным кодом на JavaScript, который предоставляет возможность отслеживать сам процесс.

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

Heritrix имеет веб-интерфейс, что позволяет управлять им из браузера.

Преимущества:

• отличная расширяемость;

• веб-интерфейс, доступный из любого браузера;

• соблюдение указаний в robot. txt.

3. Pyspider

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

Pyspider содержит ряд инструментов, таких как: менеджер проектов, средство просмотра результатов, монитор задач — дающих пользователям отличный контроль над процессом парсинга. Интересная особенность, которая отличает Pyspider от Scrapy, заключается в том, что он может сканировать страницы JavaScript.

Для сохранения результатов фреймворк поддерживает различные базы данных, в том числе и MySQL. Pyspider очень прост в использовании, что является ещё одним преимуществом для новичков.

Преимущества:

• мощный пользовательский веб-интерфейс;

• распределенная архитектура;

• может читать страницы, создаваемые «на лету» с помощью JavaScript.

4. Web-Harvest

Web-Harvest — инструмент для веб-парсинга, написанный на Java. Разработчикам, предпочитающим Java следует присмотреться к нему повнимательнее, если им нужен парсер.

Web-Harvest подходит прежде всего для извлечения данных из страниц в формате HTML или XML, для чего используются различные способы и технологии.

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

Преимущества:

• поддерживает обработку файлов, работу с циклами и переменными;

• помимо HTML может работать с данными в формате XML.

5. Apify SDK

Разработанный для Node. js Apify SDK является одним из самых популярных парсеров, основанных на JavaScript.

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

Apify SDK — не просто средство веб-парсинга, но и целая библиотека автоматизации, способная взять на себя множество рутинных операций.

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

Имеется встроенная поддержка популярных плагинов Node. js, таких как: puppeteer, playwright и Cheerio.

Еще одна замечательная особенность Apify SDK заключается в том, что он способен парсить несколько URL-адресов одновременно, что, в свою очередь, позволяет избегать нежелательных простоев и использовать все вычислительные мощности.

Преимущества:

• высокопроизводительный масштабируемый веб-парсер;

• пул прокси-серверов в облачном сервисе Apify помогает избежать обнаружения;

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

6. MechanicalSoup

MechanicalSoup — это инструмент на основе Python, который даёт возможность имитировать то, каким образом люди взаимодействуют с веб-сайтами в браузере.

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

Идеально подходит как для просмотра веб-страниц, так и для имитации поведения человека.

Благодаря своим возможностям, MechanicalSoup может помогать разгадывать «капчи» и быстрее попадать на нужные веб-страницы.

Единственным недостатком MechanicalSoup можно считать отсутствие поддержки JavaScript, и соответственно, если требуется взаимодействовать со страницей, активно использующей JavaScript, придётся подыскивать другое решение.

Преимущества:

• прекрасно имитирует поведение человека;

• парсинг простых веб-сайтов с рекордной скоростью;

• документация понятная для новичков;

7. Node-crawler

Node-crawler — это легкая библиотека на Node. js со множеством полезных функций для парсинга.

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

Node-crawler позволяет обойтись без составления регулярных выражений, так как поддерживает быстрый выбор объектов в дереве DOM (Document Object Model — общепринятый интерфейс, отражающий содержимое веб-страницы). Это в свою очередь может значительно повысить эффективность разработки.

Также Node-crawler поддерживает Cheerio для разбора дерева DOM, но позволяет при этом заменить его любым другим аналогичным решением.

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

Преимущества:

• эффективный и простой в использовании;

• поддерживает быстрый выбор объектов из DOM;

• позволяет настроить размер пула и интенсивность запросов.

8. Apache Nutch

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

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

Nutch предоставляет специальные расширяемые интерфейсы, такие как: Parse, Index и ScoringFilter — что значительно повышает удобство его использования с точки зрения доработки.

Apache Nutch регулярно обновляется, что тоже является несомненным плюсом.

Один из немногих парсеров, которые подчиняются правилам robots. txt.

Всё это делает Apache Nutch прекрасным инструментом для чтения веб-страниц.

Преимущества:

• регулярные обновления устраняют ошибки и дают большие возможности для работы;

• сообщество полное энергии и энтузиазма, которое может оказать неоценимую помощь;

• высокая масштабируемость.

9. Jaunt

Jaunt — ещё один проект на основе Java, который можно использовать для веб-автоматизации. Программисты могут создавать на его основе инструменты для парсинга.

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

Jaunt — проект, созданный для современного мира, поэтому он может эффективно парсить страницы, насыщенные JavaScript; его также можно использовать для запросов JSON.

Преимущества:

• ультралёгкий браузер с машинным интерфейсом;

• работает с данными в формате JSON;

• поддерживает как HTTP, так и HTTPS.

10. Crawler4j

Crawler4j — это библиотека Java с открытым исходным кодом; довольно простая в использовании. Может быть легко настроена благодаря простому API. Так, к примеру, многопоточный парсер может быть настроен за считанные минуты.

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

Преимущества:

• простая настройка многопоточного парсера;

• может обрабатывать как «on-line», так и «off-line» страницы;

• простое для понимания руководство.

Что такое Веб-парсинг?

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

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

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

Так как же работает веб-парсинг? Простыми словами: существуют инструменты и соответствующее программное обеспечение, которое может выполнить всю работу по сбору и сохранению данных.

Инструментов для веб-парсинга много. Однако, не все они будут одинаково удобны для отдельно взятого пользователя.

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

Обзор парсеров с открытым исходным кодом

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

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

Лучший способ избежать всех подобных проблем — это выбрать парсер с открытым исходным кодом. Открытое ПО можно изучить досконально, а при необходимости и доработать (открытая лицензия даёт на это право: можно менять и дорабатывать функционал вне зависимости от целей использования).

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

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

Для чего можно использовать веб-парсинг?

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

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

Предвидение

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

Такие данные могут перепродаваться между компаниями.

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

Уточнение перечней

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

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

Сравнение цен

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

Существует множество подобных сайтов, сравнивающих цены и другие особенности, но всех их объединяет одно — за всем этим стоит парсинг, наполнивший таблицы данными, необходимыми для аналитики.

Некоторые парсеры даже специально спроектированы для извлечения цен с сайтов, подобных Amazon.

Лидогенерация

Цифровой маркетинг уже давно вошел в нашу жизнь. И если компания не имеет контактов своих клиентов, то у неё мало шансов на выживание.

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

Превращение потенциальных клиентов в постоянных — вот, что может дать парсинг!

Аналогично B2C (бизнес для клиента) подобные техники могут быть применены и в B2B (бизнес для бизнеса), так как участники бизнес-сообщества открыто и максимально широко публикуют данные о себе.

Анализ социальных сетей

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

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

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

Инвестиционные возможности

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

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

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

Законно ли использовать веб-парсинг?

Самое большое беспокойство у людей вызывает законность парсинга. Всё будет зависеть от того, какие данные извлекаются из веб-сайта.

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

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

Особенности по-настоящему хорошего веб-парсера

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

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

Второе, на что стоит обратить внимание — это интерфейс и простота использования. Даже самая лучшая функция бесполезна, если невозможно понять, как её использовать.

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

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

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

В заключение

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

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

Где можно почитать больше информации про парсинг? Я регулярно пишу в Телеграмм наш опыт. Подписывайтесь, если хотите посмотреть на "изнанку" ИТ бизнеса в России :)

0
8 комментариев
Написать комментарий...
Евгений Чернявский

Selenium принципиально не включен? Я понимаю, что он для тестировки. Но в задачах скрапинга, когда необходимый элемент доступен только в отрендеренной странице - незаменим.

Ответить
Развернуть ветку
Максим Кульгин
Автор

Это мы конечно упустили да.

Ответить
Развернуть ветку
Vasya Pupkin

Блин в детстве этим занимался, python js был такой инструмент, awesomium . Да много времени прошло. А так по хорошему нужно просто подсасываться к айпи, желательно легально, и не мучать бедные хостинги и бедные магазины) все равно в их же интересах что бы была конкуренция.

Ответить
Развернуть ветку
P P

Дык были бы апи у всех :)

Ответить
Развернуть ветку
Боровков Евгений

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

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

А если вы все-таки маркетолог, который хочет что-то парсить и ему не нужны сложные слова типо JSON и SDK, то приходите к нам в https://wmtools.ru/
У нас легко и няшно в интерфейсе можно структуру чужого сайта посмотреть.

Ответить
Развернуть ветку
Артур Аляска

pip install requests beautifulsoup4

Ответить
Развернуть ветку
Alex Dok

headless броузер + либа управления = парсер с рендерингом. А иначе инсту не спарсить сейчас)

Ответить
Развернуть ветку
Реальный татарин

Предвидение
_____________
было бы интересно увидеть на примере.

Ответить
Развернуть ветку
Читать все 8 комментариев
null