Как сделать парсер сайта самостоятельно (текстовая инструкция +видео)
2) массово выгружать информацию из категорий товаров.
3) выгружать данные в файлы YML,Excel,CSV,JSON.
Видео-инструкция по созданию парсера
Создадите настройку для нового парсера
На следующем шаге введите ссылку на карточку товара и на категорию
Для примера ввели ссылки для сайта eurosvet.ru
Карточка товара
https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki/podvesnoy-svetilnik-so-steklyannym-plafonom-50208-1-yantarnyy-a052491
Ссылка на категорию
https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki
и нажмите на кнопку «Далее»
и вы попадете на страницу где будет настраиваться парсер для вашего конкретного сайта.
Настройка парсера
Можно выделить следующие этапы в настройке парсера сайта:
1. Настройка извлечения полей для конкретного продукта.
2. Настройка извлечения ссылок на карточки товаров из категории.
3. Настройка пагинаций (на английском pagination).
1. Настройка извлечения полей для конкретного продукта.
Важно! как только вы настроили поле, то тестируйте его извлечение через кнопку «Поля продукта».
И вы увидите как отработает парсер для вашего продукта.
Блок, который отвечает за извлечение полей — отмечен на картинке:
чтобы добавить новые поле -нажимайте на кнопку «добавить», если надо удалить,то ,сперва, надо выделить соответствующее поле, а потом кликнуть на соответствующую кнопку.
На следующей картинке показан диалог добавления новых полей.
Есть 3 вида полей.
1) простые(базовые). — SYS_PRODUCT_SKU, SYS_PRODUCT_NAME, SYS_PRODUCT_MANUFACTURER и т.д.
это соответствунно Артикул, имя и производитель товара.
SYS_PRODUCT_IMAGES_ALL — это поле куда должно быть записаны все картинки продукта.
2) характеристики.-определяются характеристики товара, например, название вы можете задать самостоятельно.
3) динамические характеристики. Это тоже задает извлечение характеристик из таблицы значений.
для этого нужно будет задать DYNAMICLIST_NAMES, DYNAMICLIST_VALUES поля таким образом чтобы количество извлекаемых названий и значений было одинаково.
Как извлекать значения
Для любого поля можно указать как оно будет извлекаться.
Есть два варианта:
1)Xpath
2)RegEx (Regular Expresstion)- регулярное выражение.
дополнительно к командам можно добавить дополнительную обработку.
2. Настройка извлечения ссылок на карточки товаров из категории.
Важно! как только вы настроили «извлечение ссылок на карточки продуктов из категории», то тестируйте его извлечение через кнопку «ссылки на продукты». И вы увидите как отработает парсер для вашей категории. Ссылки соберутся без пагинаций.
поле «Шаблон» в этой области нужно для того чтобы задать абсолютный путь для ссылки,если это необходимо. Обычно оставляется пустым.
3. Настройка пагинаций (на английском pagination).
Если вы уже дошли до этого шага, то это значит что вы уже сделали 90% работы. После завершения настроек по пагинации чтобы протестировать парсер надо будет нажать на кнопку «товары из категории».
есть два варианта как настраивать пагинацию
1. через шаблон
2. через «следующую ссылку»
Что такое «следующая ссылка» вам поможет понять следующее изображение:
т.е. та ссылка, которая определяет переход из текущей страницы каталога на следующую.
Как запускать парсер
Есть два способа:
1) из настроек парсера, путем нажатия на кнопку «товары из категории»
2) из вкладки «Экспорт», путем нажатия на кнопку «запустить экспорт»
два этих способа предложат вам следующий экран, на котором надо будет задать откуда брать «входные» ссылки
для старта парсера
в самом простом варианте использования, вы на каждый запуск определяет ссылка или на карточки товаров или на категории,выбирая соответствующий режим работы.
Если надо задать статический список или карточек товаров или категорий, то для этого надо задать grabCatalog файл через глобальные настройки кампании один раз, а потом уже использовать каждый следующий раз вручную или через запуск по-расписанию парсера.
Что такое grabCatalog формат
Это текстовый файл, который определяет
1)иерархию категорий, которая будет извлекаться
2)названия и ссылки (опционально) на категории, которые будет извлекаться
3)ссылки на карточки товаров (опционально).
важно знать о формате
# — (знак Решетка) — определяет уровень иерархии
[path] — отделяет имя категории от ссылки на категорию
пример : 1 категория будет парсится
#Подвесные светильники[path]https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki
пример : 2 категории будет парсится
#Подвесные светильники[path]https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki
#Потолочные светильники[path]https://eurosvet.ru/catalog/lustri/potolochnie-svetilniki
пример : 2 категории будет парсится, но они заданы как подкатегории 1 категории верхнего уровня.
#Cветильники
##Подвесные светильники[path]https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki
##Потолочные светильники[path]https://eurosvet.ru/catalog/lustri/potolochnie-svetilniki
пример : заданы 2 ссылки на продукт (задаются после названия категории).
#Cветильники
https://eurosvet.ru/catalog/lustri/podvesnye-svetilniki/podvesnoy-svetilnik-so-steklyannym-plafonom-50208-1-yantarnyy-a052491
https://eurosvet.ru/catalog/lustri/potolochnie-svetilniki/potolochnaya-lyustra-571-a052390
Как настроить выгрузку данных в определенный тип файла
Краткий Урок-введение в Xpath для парсинга сайтов с примерами.
Для выбора тегов и наборов тегов в HTML документе XPath использует выражения путей. Тег Извлекается следуя по заданному пути или по, так называемым, шагам.
Пример HTML файла
Для примера будет использоваться следующий HTML файл
Выбор тегов (как извлечь конкретные теги через XPath)
Чтобы извлечь теги в HTML документе, XPath использует выражения. Тег Извлекается по заданному пути. Наиболее полезные выражения пути:
Xpath Выражение | Результат |
---|---|
имя_тега | Извлекает все узлы с именем «имя_тега» |
/ | Извлекает от корневого тега |
// | Извлекает узлы от текущего тега, соответствующего выбору, независимо от их местонахождения |
. | Извлекает текущий узел |
.. | Извлекает родителя текущего тега |
@ | Извлекает атрибуты |
Некоторые выборки по HTML документу из примера:
Xpath Выражение | Результат |
---|---|
messages | Извлекает все узлы с именем «messages» |
/messages | Извлекает корневой элемент сообщений Важно знать!: Если путь начинается с косой черты ( / ), то он всегда представляет абсолютный путь к элементу! |
messages/note | Извлекает все элементы note, являющиеся потомками элемента messages |
//note | Извлекает все элементы note независимо от того, где в документе они находятся |
messages//note | Извлекает все элементы note, являющиеся потомками элемента messages независимо от того, где они находятся от элемента messages |
//@date | Извлекает все атрибуты с именем date |
Предикаты
Предикаты позволяют найти конкретный Тег или Тег с конкретным значением.
Предикаты всегда заключаются в квадратные скобки [].
В следующей таблице приводятся некоторые выражения XPath с предикатами, позволяющие сделать выборки по HTML документу из примера
Xpath Выражение | Результат |
---|---|
/messages/note[1] | Извлекает первый элемент note, который является прямым потомком элемента messages. Важно знать!: В IE 5,6,7,8,9 первым узлом будет [0], однако согласно W3C это должен быть [1]. Чтобы решить эту проблему в IE, нужно установить опцию SelectionLanguage в значение XPath. В JavaScript: HTML.setProperty(«SelectionLanguage»,»XPath»); |
/messages/note[last()] | Извлекает последний элемент note, который является прямым потомком элемента messages. |
/messages/note[last()-1] | Извлекает предпоследний элемент note, который является прямым потомком элемента messages. |
/messages/note[position() | Извлекает первые два элемента note, которые являются прямыми потомками элемента messages. |
//heading[@date] | Извлекает все элементы heading, у которых есть атрибут date |
//heading[@date=»11/12/2020″] | Извлекает все элементы heading, у которых есть атрибут date со значением «11/12/2020» |
Выбор неизвестных заранее тегов
Чтобы найти неизвестные заранее узлы HTML документа, XPath позволяет использовать специальные символы.
Спецсимвол | Описание |
---|---|
* | Соответствует любому тегу элемента |
@* | Соответствует любому тегу атрибута |
node() | Соответствует любому тегу любого типа |
Спецсимволы, пример выражения XPath со спецсимволами:
Xpath Выражение XPath | Результат |
---|---|
/messages/* | Извлекает все элементы, которые являются прямыми потомками элемента messages |
//* | Извлекает все элементы в документе |
//heading[@*] | Извлекает все элементы heading, у которых есть по крайней мере один атрибут любого типа |
Если надо выбрать нескольких путей
Использование оператора | в выражении XPath позволяет делать выбор по нескольким путям.
В следующей таблице приводятся некоторые выражения XPath, позволяющие сделать выборки по демонстрационному HTML документу:
Xpath Выражение XPath | Результат |
---|---|
//note/heading | //note/body | Извлекает все элементы heading И body из всех элементов note |
//heading | //body | Извлекает все элементы heading И body во всем документе |
Что такое парсинг и как правильно парсить
Что такое парсинг данных должен знать каждый владелец сайта, планирующий серьёзно развиваться в бизнесе. Это явление настолько распространено, что рано или поздно с парсингом может столкнуться любой. Либо как заказчик данной операции, либо как лицо, владеющее объектом для сбора информации, то есть ресурсом в Интернете. К парсингу в российской бизнес-среде часто наблюдается негативное отношение. По принципу: если это не незаконно, то уж точно аморально. На самом деле из его грамотного и тактичного использования каждая компания может извлечь немало преимуществ.
Digital шагает семимильными шагами. Еще недавно компании и клиенты радовались первым сайтам, а сегодня загрузка страницы за 10 секунд вызывает дикое раздражение. Пройдите тест и узнайте, какие невероятные технологии уже стали реальностью, а какие пока остаются мечтой.
Что такое парсинг
Глагол “to parse” в дословном переводе не означает ничего плохого. Делать грамматический разбор или структурировать — действия полезные и нужные. На языке всех, кто работает с данными на сайтах это слово имеет свой оттенок. Парсить — собирать и систематизировать информацию, размещенную на определенных сайтах, с помощью специальных программ, автоматизирующих процесс. Если вы когда-либо задавались вопросом, что такое парсер сайта, то вот он ответ. Это программные продукты, основной функцией которых является получение необходимых данных, соответствующих заданным параметрам.
Законно ли использовать парсинг
- взлом сайта (то есть получение данных личных кабинетов пользователей и т. п.);
- DDOS-атаки (если на сайт в результате парсинга данных ложится слишком высокая нагрузка);
- заимствование авторского контента (фотографии с копирайтами, уникальные тексты, подлинность которых заверена у нотариуса и т. п. лучше оставить на их законном месте).
Парсинг законен, если он касается сбора информации, находящейся в открытом доступе. То есть всего, что можно и так собрать вручную.
Парсеры просто позволяют ускорить процесс и избежать ошибок из-за человеческого фактора. Поэтому «незаконности» в процесс они не добавляют.
Другое дело, как владелец свежесобранной базы распорядится подобной информацией. Ответственность может наступить именно за последующие действия.
Маркетинг
Читайте также:
White Paper: что это, для каких целей нужна белая книга, как писать, оформлять и продвигать вайт пейпер
White Paper: что это, для каких целей нужна белая книга, как писать, оформлять и продвигать вайт пейпер
Для чего нужен парсинг
Что такое парсить сайт разобрались. Переходим к тому, зачем же это может понадобиться. Здесь открывается широкий простор для действий.
Основная проблема современного Интернета — избыток информации, которую человек не в состоянии систематизировать вручную.
Для чего нужен парсинг | Польза |
Анализа ценовой политики | Чтобы понять среднюю стоимость тех или иных товаров на рынке, удобно использовать данные по конкурентам. Однако если это сотни и тысячи позиций, собрать их вручную оперативно невозможно. |
Отслеживания изменений | Парсинг можно осуществлять на регулярной основе, например, каждую неделю, выявляя на что повысились цены в среднем по рынку и какие новинки появились у конкурентов. |
Наведения порядка на своём сайте | Да, так тоже можно. И даже нужно, если в интернет-магазине несколько тысяч товаров. Найти несуществующие страницы, дубли, неполное описание, отсутствие определенных характеристик или несоответствие данных по складским остаткам тому, что отображается на сайте. С парсером быстрее. |
Наполнения карточек товаров в интернет-магазине | Если сайт новый, счёт обычно идёт даже не на сотни. Вручную на это уйдёт непозволительно количество времени. Часто используют парсинг с иностранных сайтов, переводят полученные тексты автоматизированным методом, после чего получают практически готовые описания. Иногда то же проделывают с русскоязычными сайтами, а полученные тексты изменяют с помощью синонимайзера, но за это можно получить санкции от поисковых систем. |
Получения баз потенциальных клиентов | Существует парсинг, связанный с составлением, например, списка лиц, принимающих решения, в той или иной отрасли и городе. Для этого может применяться личный кабинет на сайтах поиска работы с доступом к актуальным и архивным резюме. Этичность дальнейшего использования подобной базы каждая компания определяет самостоятельно. |
Сквозная аналитика — это тоже своеобразный парсинг, только рекламы и продаж. Система интегрируется с площадками и CRM, а потом автоматически соединяет данные о бюджетах, кликах, сделках и подсчитывает окупаемость каждой кампании. Используйте ее, чтобы не потеряться в большом количестве информации и видеть в отчетах то, что вам действительно нужно. Отчеты Calltouch легко кастомизировать под себя и задачи команды маркетологов.
Сквозная аналитика Calltouch
- Анализируйте воронку продаж от показов до денег в кассе
- Автоматический сбор данных, удобные отчеты и бесплатные интеграции
Достоинства парсинга
Они многочисленны. По сравнению с человеком парсеры могут:
- собирать данные быстрее и в любом режиме, хоть круглосуточно;
- следовать всем заданным параметрам, даже очень тонким;
- избегать ошибок от невнимательности или усталости;
- выполнять регулярную проверку по заданному интервалу (каждую неделю и т. п.);
- представить собранные данные в любом необходимом формате без лишних усилий;
- равномерно распределять нагрузку на сайт, где проходит парсинг (обычно одна страница за 1-2 секунды), чтобы не создавать эффект DDOS-атаки.
Ограничения при парсинге
Есть несколько вариантов ограничений, которые могут затруднить работу парсера:
- По user-agent. Это запрос, в котором программа сообщает сайту о себе. Парсеры банят многие веб-ресурсы. Однако в настройках данные можно изменить на YandexBot или Googlebot и отсылать правильные запросы.
- По robots.txt, в котором прописан запрет для индексации поисковыми роботами Яндекса или Google (ими мы представились сайту выше) определенных страниц. Необходимо задать в настройках программы игнорирование robots.txt.
- По IP-адресу, если с него в течение долгого времени поступают на сайт однотипные запросы. Решение — использовать VPN.
- По капче. Если действия похожи на автоматические, выводится капча. Научить парсеры распознавать конкретные виды достаточно сложно и дорогостояще.
Бесплатно Электронная книга
23 действующих способа сделать свой маркетинг круче, быстрее, эффективнее, чем сейчас Получить бесплатно
Какую информацию можно парсить
Спарсить можно всё, что есть на сайте в открытом доступе. Чаще всего требуются:
- наименования и категории товаров;
- основные характеристики;
- цена;
- информация об акциях и новинках;
- тексты описания товаров для их последующего переделывания «под себя» и т. п.
Изображения с сайтов технически спарсить тоже можно, но, как уже упоминалось выше, если они защищены авторским правом, лучше не нужно. Нельзя собирать с чужих сайтов личные данные их пользователей, которые те вводили в личных кабинетах.
Парсинг часто используется в индустрии e-commerce. Оценить влияние парсинга и его результатов можно в сквозной аналитике для интернет-магазинов. Вам доступны отчеты по любым временным срезам, метрикам и товарам. С помощью этих данных вы узнаете, из каких источников вы получаете добавления в корзины и продажи, и сможете оптимизировать рекламу с опорой на эти данные.
Аналитика для интернет-магазина
- Отслеживайте корзины, звонки, заявки и продажи с них с привязкой к источнику
- Постройте воронку продаж и оптимизируйте маркетинг
Алгоритм работы парсинга
Принцип действия программы зависит от целей. Но схематично он выглядит так:
- Парсер ищет на указанных сайтах или по всему Интернету данные, соответствующие параметрам.
- Информация собирается и производится первоначальная систематизация (её глубина также определяется при настройке);
- Из данных формируется отчёт в формате, соответствующем требуемым критериям. Большинство современных парсеров мультиформатны и могут успешно работать хоть с PDF, хоть с архивами RAR, хоть с TXT.
Способы применения
Основных способов применения парсинга существует два:
- анализировать свой сайт, внося в него необходимые улучшения;
- анализировать сайты конкурентов, заимствуя оттуда основные тенденции и конкретные характеристики товаров.
Обычно оба варианта работают в тесной связке друг с другом. Например, анализ ценовых позиций у конкурентов отталкивается от имеющегося диапазона на собственном сайте, а обнаруженные новинки сопоставляются с собственной товарной базой и т. п.
Предложения от наших партнеров
Online CRM для автосервиса
До 3-х месяцев CRM-системы для автосервисов
Бесплатная часовая сессия с ведущим маркетологом
Хостинг-провайдер и аккредитованный регистратор доменных имён
Скидка до 80% на пакет услуг «Быстрый старт» для создания сайта
Технический аудит вашего сайта за 50 рублей
Агенство по разработке сайтов
Бесплатная помощь в формировании концепции вашего сайта
Сервис мониторинга и оптимизации интернет-рекламы
Три дня бесплатного пользования сервисом
Как парсить данные
Для парсинга данных можно выбрать один из двух форматов:
- воспользоваться специальными программами, которых на рынке существует немало;
- написать их самостоятельно. Для этого может применяться практически любой язык программирования, например, PHP, C++, Python/
Если требуется не вся информация по странице, а только что-то определенное (наименования товаров, характеристики, цена), используется XPath.
XPath – это язык, на котором формируются запросы к XML-документам и их отдельным элементам.
С помощью его команд необходимо определить границы будущего парсинга, то есть задать как парсить данные с сайта — полностью или выборочно.
Чтобы определить XPath конкретного элемента необходимо:
- Перейти на страницу любого товара на анализируемом сайте.
- Выделить цену и щелкнуть по выделению правой кнопкой мыши.
- В открывшемся окне выбрать пункт «Посмотреть код».
- После появления с правой стороны экрана кода, нажать на три точки с левой стороны от выделенной строки.
- В меню выбрать пункт “Copy”, затем “Copy XPath”.
Пример определения XPath элемента на сайте интернет-магазина обуви Holtz
Как спарсить цену
Задаваясь вопросом «Парсинг товаров — что это?», многие подразумевают именно возможность провести ценовую разведку на сайтах конкурентов. Цены парсят чаще всего и действовать необходимо следующим образом. Скопированный в примере выше код ввести в программу-парсер, которая подтянет остальные данные на сайте, соответствующие ему.
Чтобы парсер не ходил по всем страницам и не пытался найти цены в статьях блога, лучше задать диапазон страниц. Для этого необходимо открыть карту XML (добавить “/sitemap.xml ” в адресную строку сайта после названия). Здесь можно найти отсылки к разделам с ценами — обычно это товары ( products) и категории (categories), хотя называться они могут и по-другому.
Маркетинг
Читайте также:
Как увеличить охваты «ВКонтакте»
Как увеличить охваты «ВКонтакте»
Как спарсить характеристики товаров
Здесь всё достаточно просто. Определяются коды XPath для каждого элемента, после чего они вносятся в программу. Так как технические характеристики у одинаковых товаров будут совпадать, можно настроить автозаполнение своего сайта на основе полученной информации.
Как парсить отзывы (с рендерингом)
Процесс сбора отзывов на других сайтах с целью переноса их к себе вначале выглядит похожим образом. Необходимо определить XPath для элемента. Однако далее возникают сложности. Часто дизайн выполнен так, что отзывы появляются на странице именно в тот момент, когда пользователь прокручивает её до нужного места.
В этом случае необходимо изменить настройки программы в пункте Rendering и выбрать JavaScript. Так парсер будет полностью воспроизводить сценарий движения по странице обычного пользователя, а отзывы получит путём выполнения скриншота.
Как парсить структуру сайта
Парсинг структуры — полезное занятие, поскольку помогает узнать, как устроен сайт конкурентов. Для этого необходимо проанализировать хлебные крошки (breadcrumbs):
- Навести курсор на любой элемент breadcrumbs;
- Нажать правую кнопку мыши и повторить действия по копированию XPath.
Далее действие необходимо выполнить для других элементов структуры.
Заключение
Парсинг сайтов — что это? Зло для владельцев сайтов или полезный инструмент для бизнеса. Скорее второе, ведь без кропотливого сбора данных не обходится ни один глубокий анализ конкурентов. Парсинг помогает ускорить процесс, снять с человека нагрузку бесконечной рутинной работы и избежать ошибок, вызванных переутомлением.
Использовать парсинг — абсолютно законно, особенно если знать все сопутствующие нюансы. А возможности этого инструмента практически безграничны. Спарсить можно почти всё — нужно только знать как.
Парсинг данных с сайтов: что это и зачем он нужен
Парсинг обычно применяют, когда нужно быстро собрать большой объем данных. Его выполняют с помощью специальных сервисов — парсеров. В этой статье мы разберем, с какой целью можно использовать парсинг, что он позволяет узнать о конкурентах и законен ли он. Также мы рассмотрим, как пошагово спарсить данные с помощью одного из инструментов.
Время чтения 17 минут
- Что такое парсинг
- Способы применения парсинга
- Что могут узнать конкуренты с помощью парсинга
- Законно ли парсить сайты
- Этапы парсинга
- Как парсить данные
- Как защитить свой сайт от парсинга
- Выводы
Что такое парсинг
Парсинг — это процесс автоматического сбора данных и их структурирования.
Специальные программы или сервисы-парсеры «обходят» сайт и собирают данные, которые соответствуют заданному условию.
Простой пример: допустим, нужно собрать контакты потенциальных партнеров из определенной ниши. Вы можете это сделать вручную. Надо будет заходить на каждый сайт, искать раздел «Контакты», копировать в отдельную таблицу телефон и т. д. Так на каждую площадку у вас уйдет по пять-семь минут. Но этот процесс можно автоматизировать. Задаете в программе для парсинга условия выборки и через какое-то время получаете готовую таблицу со списком сайтов и телефонов.
Плюсы парсинга очевидны — если сравнивать его с ручным сбором и сортировкой данных:
- вы получаете данные очень быстро;
- можно задавать десятки параметров для составления выборки;
- в отчете не будет ошибок;
- парсинг можно настроить с определенной периодичностью — например, собирать данные каждый понедельник;
- многие парсеры не только собирают данные, но и советуют, как исправить ошибки на сайте.
В сети достаточно много программ для парсинга. Они могут находиться в «облаке» или «коробке»:
- облачная версия — это SaaS , вам нужно будет зарегистрироваться и работать с сервисом прямо в браузере;
- коробочная версия — решение, которое нужно установить на ваш компьютер, и работать с ним в окне программы.
В обоих случаях вы платите за доступ к парсеру в течение какого-то времени. Например, месяца, года или нескольких лет.
Способы применения парсинга
Область применения парсинга можно свести к двум целям:
- анализ конкурентов, чтобы лучше понимать, как они работают, и заимствовать у них какие-то подходы;
- анализ собственной площадки для устранения ошибок, быстрого внедрения изменений и т. д.
Мы регулярно используем парсер для блога Ringostat. Например, когда нужно найти изображения, к которым по какой-то причине не прописан атрибут Alt. Поисковики считают это ошибкой и могут понизить в выдаче тот сайт, на котором много таких иллюстраций. Даже страшно представить, сколько времени потребовалось бы на ручной поиск таких картинок. А благодаря парсеру мы получаем список со ссылками за несколько минут.
Теперь давайте рассмотрим для каких целей еще можно использовать парсинг.
- Исследование рынка . Парсинг позволяет быстро оценить, какие товары и цены у конкурентов.
- Анализ динамики изменений . Парсинг можно проводить регулярно, чтобы оценивать, как менялись какие-то показатели. Например, росли или падали цены, изменялось количество онлайн-объявлений или сообщений на форуме.
- Устранение недочетов на собственном ресурсе. Выявление ошибок в мета-тегах, битых ссылок, проблем с редиректами, дублирующихся элементов и т. д.
- Сбор ссылок, ведущих на вашу площадку. Это поможет оценить работу подрядчика по линкбилдингу. Как проверять внешние ссылки и какими инструментами это делать, подробно описано в статье . Пример такого отчета:
- Наполнение каталога интернет-магазина. Обычно у таких сайтов огромное количество позиций и уходит много времени, чтобы составить описание для всех товаров. Чтобы упростить этот процесс, часто парсят зарубежные магазины и просто переводят информацию о товарах.
- Составление клиентской базы. В этом случае парсят контактные данные, например, пользователей соцсетей, участников форумов и т. д. Но тут стоит помнить, что сбор информации, которой нет в открытом доступе, незаконен.
- Сбор отзывов и комментариев на форумах, в соцсетях.
- Создание контента, который строится на выборке данных . Например, результаты спортивных состязаний, инфографики по изменению цен, погоды и т. д.
Кстати, недобросовестные люди могут использовать парсеры для DDOS-атак. Если одновременно начать парсить сотни страниц сайта, то площадку можно «положить» на какое-то время. Это, разумеется, незаконно — об этом подробнее ниже От подобных атак можно защититься, если на сервере установлена защита.
Что могут узнать конкуренты с помощью парсинга
В принципе, любую информацию, которая размещена на вашем сайте. Чаще всего ищут:
- цены;
- контакты компании;
- описание товаров, их характеристик и в целом контент;
- фото и видео;
- информацию о скидках;
- отзывы.
Проводить такую «разведку» могут не только конкуренты. Например, журналист может провести исследование, правда ли интернет-магазины предоставляют настоящие скидки на Черную пятницу. Или искусственно завышают цены незадолго до нее и реальную цену выдают за скидку. С этой целью он может заранее спарсить цены десятка интернет-магазинов и сравнить с ценами на Черную пятницу.
Законно ли парсить сайты
Если кратко, то законно — если вы парсите информацию, которая есть в открытом доступе. Это логично, ведь так любой человек и без парсера может собрать интересующие данные. Что преследуется законом:
- парсинг с целью DDOS-атаки;
- сбор личных данных пользователей, которые находятся не на виду — например, в личном кабинете, указывались при регистрации и т. д.;
- парсинг для воровства контента — например, перепост чужих статей под своим именем, использование авторских фото не из бесплатных стоков;
- сбор информации, которая составляет государственную или коммерческую тайну.
Рассмотрим это подробнее с точки зрения законодательства Украины.
Согласно ЗУ «Об информации» , информация по режиму доступа делится на общедоступную и информацию с ограниченным доступом. В свою очередь информация с ограниченным доступом делится на конфиденциальную, гостайну и служебную. Определения каждого вида содержатся в ЗУ «О доступе к публичной информации .
В большей степени любой спор касательно незаконного парсинга и/или распространения информации касается именно конфиденциальных данных.
- Информация о физлице, которая может его идентифицировать, априори является конфиденциальной и может быть использована только по согласию. Поэтому, чтобы парсинг был законным, парсить нужно либо деперсонифицированные данные, либо получать согласие распорядителя информации — владельца сайта, на котором зарегистрирован пользователь.
- Если речь идет об информации, не являющейся персональной, она может считаться конфиденциальной, только если ее владелец определил ее как таковую. Так, чаще всего на сайтах размещается либо политика конфиденциальности, либо правила пользования сайтом. В этом документе/на этой странице указаны права и обязанности посетителей/пользователей, которые нужно соблюдать. Поэтому перед парсингом стоить проверить, не запрещен ли сбор информации и использование данных сайта.
Также важным является возможное нарушение авторских установленных ЗУ «Об авторских и смежных правах» и ГКУ . Перед парсингом нужно понимать, что любой тип контента защищен авторским правом с момента его создания. И только автор определяет как (платно/бесплатно), где (статья/сайт/реклама) и сколько (на протяжении срока действия лицензии/бессрочно) можно использовать его творение.
Даже при условии правомерности парсинга, его осуществление не должно подрывать нормальную работу сайта, который парсят. Если из-за парсинга информации произойдет сбой и утечка или подделка данных, то подобные действия могут расцениваться как несанкционированное вмешательство в работу сайта, что является нарушением согласно УК Украины .
Есть еще один нюанс. Представим, что одна компания долго разрабатывала продукт, вкладывала деньги, чтобы собрать базу пользователей или покупателей, а другая спарсила все и за несколько недель создала практически аналогичный сервис или продукт. Подобные действия при наличии весомой доказательной базы могут расцениваться как нарушение условий конкуренции согласно ЗУ «О защите от недобросовестной конкуренции» .
Этапы парсинга
Если не погружаться в технические подробности, то парсинг строится из таких этапов:
- пользователь задает в парсере условия, которым должна соответствовать выборка — например, все цены на конкретном сайте;
- программа проходится по сайту или нескольким и собирает релевантную информацию;
- данные сортируются;
- пользователь получает отчет — если проводилась проверка на ошибки, то критичные выделяются контрастным цветом;
- отчет можно выгрузить в нужном формате — обычно парсеры поддерживают несколько.
Как парсить данные
Теперь давайте более подробно рассмотрим, как парсить данные. Разберем его в разрезе довольно частой задачи для менеджера — собрать базу для «холодного» обзвона. В качестве примера возьмем парсер Netpeak Checker , с которым работаем и сами.
Допустим, наша компания продает оборудование для салонов красоты. И сотруднику нужно собрать базу контактов таких компаний, чтобы позвонить и предложить им наш товар. Обычно на старте готового списка площадок у менеджера нет. Поэтому для поиска можно использовать встроенный в программу инструмент «Парсер поисковых систем».
Вводим в нем нужные запросы — «салон красоты», «парикмахерская», «бьюти-процедуры».
На вкладке «Настройки» выбираем поисковую систему и количество результатов — например, топ-10 или все результаты выдачи. В дополнительных настройках указываем язык выдачи и параметры геолокации, чтобы в результаты попадали салоны красоты только из нужного нам региона. Сохраняем настройки и нажимаем «Старт», чтобы начать парсинг.
Чтобы провести парсинг номеров телефонов с главных страниц найденных сайтов, нажимаем на кнопку «Перенести хосты». После этого ссылки отобразятся в основной таблице программы.
Теперь, когда у нас есть полный список салонов, на боковой панели в разделе параметров «On-Page» отмечаем пункт «Телефонные номера» и нажимаем «Старт». Все найденные телефоны с сайтов и их число будут внесены в соответствующих колонках основной таблицы результатов.
Если бы у нас заранее был собран перечень необходимых адресов, мы могли бы их просто загрузить в программу и точно так же собрать телефоны.
Сохраняем данные в формате CSV, нажав кнопку «Экспорт».
Вот и все — мы получили список салонов и их телефонов.
Кстати, сэкономить время можно не только за счет парсинга. Вы в любом случае тратите где-то минуту, чтобы набрать номер на телефоне. Если в вашем списке хотя бы 50 компаний, на это в сумме уйдет почти час. Но есть способ тратить на набор номера одну секунду. Это Ringostat Smart Phone — умный телефон, встроенный прямо в браузер Chrome. Он позволяет звонить, просто нажав на номер, расположенный на любом сайте, в карточке CRM или просто в таблице. Как в нашем примере.
Подключите Ringostat, установите расширение и сможете обзвонить базу за минимальное время. При желании ее можно сразу перенести в CRM и звонить уже оттуда с помощью Ringostat Smart Phone. Тут видно, что звонок происходит мгновенно:
Как защитить свой сайт от парсинга
Как мы упоминали выше, парсинг не всегда используют в нормальных целях. Если вы боитесь атаки со стороны конкурентов, площадку можно защитить. Существует несколько способов, как это сделать.
- Ограничьте число действий, которые можно совершить на вашей площадке за определенное время. Например, разрешите только три запроса в течение минуты с одного IP-адреса.
- Отслеживайте подозрительную активность. Если заметили сильно много запросов с одного адреса, запретите ему доступ. Или показывайте reCAPTCHA, чтобы пользователь подтвердил, что он человек, а не бот или парсер.
- Создайте учетную запись, чтобы действия на сайте мог совершать зарегистрированный посетитель.
- Идентифицируйте всех, кто заходит на площадку. Например, по скорости заполнения формы или месту нажатия на кнопку. Есть скрипты, которые позволят собирать информацию о местонахождении пользователя, разрешении экрана.
- Скройте информацию о структуре сайта. Пусть доступ к ней будет только у администратора.
- Обращайте внимание на похожие или идентичные запросы, одновременно поступающие с разных IP-адресов. Парсинг может быть распределенным. Например, через прокси-сервера.
В любом случае, помните, что всегда есть риск заблокировать реального пользователя, а не программу. Поэтому тут вам решать, что важнее — безопасность сайта или риск потери потенциального клиента.
Выводы
- Парсинг — это сбор и сортировка данных с определенными параметрами. У этого инструмента масса преимуществ: скорость, отсутствие ошибок в выборке, возможность проводить парсинг регулярно. Плюс, многие парсеры не просто собирают данные, но и советуют, как исправить критические ошибки на вашем сайте.
- Парсинг используется для анализа конкурентов, исследования рынка, поиска и устранения ошибок на собственной площадке, создания контента. Интернет-магазины используют его, чтобы переводить описания товаров с иностранных площадок.
- Парсинг вполне законен, если вы собираете информацию, которая есть в открытом доступе. Нельзя проводить его, чтобы «положить» ресурс конкурента, украсть чужой контент или получить данные, не предназначенные для общего доступа.
- Если боитесь атаки на свой сайт, парсинг можно выявить и запретить. Способов существует несколько, но многие парсеры хвастаются в сети, что умеют их обходить. Плюс, вы всегда рискуете заблокировать «живого» человека
Как сделать парсер сайта
Этим уроком мы начинаем курс, про который нас часто спрашивали — курс по парсингу данных с помощью Python. Мы уже рассказывали о парсинге без программирования, с помощью расширений для браузера, но их возможности ограничены и подходят не для всех сайтов. А вот Python поможет вам спарсить практически что угодно.
Съемка и монтаж: Глеб Лиманский
Чтобы правильно парсить, нужно понимать, как устроены сайты. Почти все они сверстаны с помощью языка HTML. Разберемся в его устройстве на примере сайта «КиноПоиск» и попробуем спарсить список из 250 лучших фильмов по версии пользователей сайта.
Похожим на «КиноПоиск» образом устроены многие сайты, с которых журналистам бывает необходимо собрать данные, поэтому он хорошо подойдет для примера.
Для этого курса мы используем браузер Google Chrome, поэтому, чтобы вам было проще понимать наши действия и не путаться в названиях функций, советуем использовать его же. Но в других браузерах, Firefox или Opera, например, все эти функции тоже есть.
Если вы кликнете на любое место сайта правой кнопкой мыши и нажмете на «Посмотреть код», то справа появится панель с кодом HTML (ее еще называют панелью разработчика).
Этот язык строится по тегам. Главный — html, в head обычно прописана метаинформация (заголовок, например), а нас сейчас интересует тег body, где лежит основная информация страницы.
Чтобы посмотреть код конкретного элемента, нужно кликнуть именно на него и нажать «Посмотреть код» — тогда в панели разработчика подсветится нужный тег.
И наоборот, если двигаться по коду в панели справа, то слева, на самой странице, будет подсвечиваться сверстанный этим тегом элемент.
На страницах со списками одни и те же теги (название, оценка и так далее) повторяются от карточки к карточке. Поэтому нужно обнаружить и выписать эти конкретные теги. Но сначала вытащим весь код страницы, и здесь пригодится библиотека Requests — мы уже рассказывали о ней, советуем сначала прочитать тот урок и установить ее.
Открываем Jupyter, импортируем библиотеку с помощью import requests. Чтобы обратиться к сайту, создаем переменную url и присваиваем ей значение нужного сайта (у нас это ссылка на топ «КиноПоиска»).
Отправим на сервер запрос с помощью команды get, на вход которой мы передаем переменную url. С помощью команды text посмотрим, что получилось.
Как видите, код получился нечитаемым. Справиться с этим поможет другая библиотека, Beautifulsoup. Импортируем ее с помощью команды from bs4 import BeautifulSoup. Возможно, для этого понадобится сначала установить библиотеку через pip install.
Мы должны передать библиотеке ответ, полученный с помощью Requests. Создадим переменную soup, передадим r.text и укажем необходимый формат (в нашем случае lxml).
Код упорядочен, теги идут один за одним — теперь мы можем вынимать из кода то, что нам нужно. Для этого вернемся в браузер, на страницу с данными. Как видно на скриншоте, подряд расположены несколько тегов div с классом desktop-rating-selection-file-item — это карточка каждого из фильмов в списке.
Сначала вытащим данные только из первой карточки, а затем перепишем код так, чтобы он сработал на все фильмы со страницы. Скопируем название класса — для этого два раза кликните на него мышкой и нажмите Ctrl+C (Cmd+C для macOS).
В Beautifulsoup есть команда find — укажем ей нужный тег (div) и через запятую класс (desktop-rating-selection-file-item). После class обязательно нужно поставить нижнее подчеркивание.
Отобразился уже не весь код, а только нужный элемент, в котором видно название фильма. Вернемся на сайт, чтобы углубиться в карточку и посмотреть, как называются нужные нам детали. Кликнем на название фильма «Зеленая миля» и снова выберем «Посмотреть код».
Например, мы видим, что ссылка на фильм лежит в теге a и имеет собственный класс selection-film-item-meta__link. В теге a, в свою очередь, есть теги p с русским и оригинальным названиями фильмов. Эти три элемента мы и заберем.
Дополним нашу первую команду: ставим точку, снова пишем find, указываем тег a и его класс.
Чтобы сделать ссылку на фильм работающей, в начале нужно дописать к ней домен. Сама ссылка лежит внутри тега, поэтому find мы применить не сможем. Воспользуемся командой get и укажем нужный атрибут (в нашем случае href).
Допишем в начало команды домен «КиноПоиска» и запустим еще раз — так мы получим готовую ссылку. Положим этот код в переменную link.
По аналогии достанем русскоязычное и оригинальное названия. Возьмем тот же код, допишем новый find, укажем нужные тег и класс. Чтобы очистить результат от ненужных элементов кода, добавим в конце команду text. Эти переменные назовем russian_name и original_name соответственно.
Еще мы можем достать из карточки страну производства и жанр — все будет работать точно так же, только класс будет не p, как у названий, а span. Страну положим в переменную country.
Однако в коде «КиноПоиска» страна и жанр имеют одинаковый класс selection-film-item-meta__meta-additional-item — а команда find находит только первое соответствие вашему запросу. Применим команду findAll, а все остальное оставим как раньше, чтобы получить список.
Чтобы вытащить только жанр, добавим нумерацию в квадратных скобках (не забывайте, что в Python отсчет идет с 0, поэтому нам нужен номер 1) и команду text. Переменную назовем film_type.
Основную информацию о фильме мы достали, но можем получить и кое-что еще — например, оценку. Проверим, как называется класс этого элемента на странице «КиноПоиска» с помощью уже известного метода «Посмотреть код». Как видите, нам повезло — класс имеет уникальное название, глубоко копать не придется.
Скопируем ту часть изначальной команды find, где мы заходим в первый div карточки фильма и сразу укажем новый поиск по тегу span и классу rating__value rating__value_positive (и не забудем про text). Переменную назовем rate.
Мы уже сделали почти всю работу, но пока что наш код работает только для первой карточки фильма в списке. Исправим это. Создадим переменную films, зададим новый поиск по самому первому div, но уже с командой findAll. И заодно посмотрим длину списка с помощью команды len. Их будет 50, потому что список топ-250 разбит на 5 страниц. Далее мы научим код ходить и по другим страницам.
Напишем цикл для каждого film в списке films. Пока скопируем команду по поиску link и посмотрим, что там нужно поправить. Нам не нужен запрос к первому div, потому что до этого мы обратились к нему через findAll — заменим его на film. Повторим так с каждым элементом.
Создадим переменную data, в который будем добавлять все переменные, которые запрашиваем.
Запустим код и посмотрим, что отображается в data.
Все ровно так, как нам было нужно. Осталось только разобраться, как собирать данные и со следующих страниц. Если мы перейдем на вторую страницу списка, то увидим, что ссылка в адресной строке браузера изменилась — там появилось page=2.
То есть, нам нужно передать этот параметр в цикл. Создадим перед циклом переменную url и воспользуемся методом f-строк, чтобы поместить внутрь фигурных скобок тот параметр, который нам нужен — номер страницы. Назовем параметр p и поместим его в цикл в промежутке от 1 до 6.
Переменную data при этом нужно вынести в начало кода, чтобы она не перезаписывалась с каждым новым циклом, а дополнялась. После этого скопируем код для запуска Requests и Beautifulsoup.
Код готов к работе. Но еще мы советуем добавить временные промежутки между запросами, чтобы не перегружать сервер, к которому обращаемся. Вернемся в область, где ранее импортировали Beautifulsoup, и импортируем из библиотеки time функцию sleep.
В основной код допишем, чтобы между запросами проходило 3 секунды. Чтобы в реальном времени проверить работоспособность скрипта, добавим команду print.
Все должно сработать. Если сейчас снова проверить длину нашего списка командой len(data), там будет 250 — как и в топе «КиноПоиска». Теперь сохраним наши данные в таблицу. Снова вернемся в область импорта и добавим туда Pandas и используем его для записи в csv.
Введем названия для колонок — пусть они дублируют названия переменных, которые мы присвоили ранее (не забудьте поместить их в ‘кавычки’). И после этого экспортируем наши данные.