Home » Программы и сервисы » Парсинг сайтов с помощью DataCol

Парсинг сайтов с помощью DataCol

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

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

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

Скачать демо версию Datacol можно с сайта разработчика. Единственное отличие демо версии от полнофункциональной заключается в невозможности экспорта данных. Так что перед покупкой стоит обязательно попробовать парсер в работе на нужных вам сайтах.

Итак, программа скачана и установлена, запустим ее.

Главное окно Datacol

Вид главного окна после первого запуска вызвал у меня шок непонимания.

Очевидно, что в верхней части окна находится тулбар. Но что произойдет, если нажать первую кнопку “Запуск”?

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

В нижней части находится список новостей от Datacol. Двойной клик на новости откроет соответствующую страницу в браузере. Только зачем нужен полный урл новости справа?

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

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

Пример парсинга сайта

Создание кампании парсинга

Я создам новую кампанию для парсинга отелей с сайта booking.com. Для этого надо нажать кнопку “Добавить кампанию”, ввести название кампании (советую называть по имени сайта) в появившемся диалоге и выбрать тип кампании “парсер”.

Создание кампании Datacol

После нажатия кнопки создать, откроется окно настройки кампании:

Окно кампании парсинга

Основные настройки

Я не буду подробно описывать все настройки приложения – для этого есть документация. Отмечу только, что есть возможность достаточно гибко настроить парсинг: можно собирать данные сразу в несколько потоков, а можно делать это осторожно, делая паузы между страницами, чтобы минимизировать вероятность бана.

На вкладке “Загрузка” можно выбрать кэширование страниц:

Настройка кэширования

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

Если сайт борется с автоматическим сбором данных, вам пригодится возможность задания списка проксей, через которые будет происходить загрузка страниц. Причем Datacol умеет проверять их работоспособность (помните тип кампании “Прокси чекер” в диалоге создании новой кампании?).

На некоторых сайтах нужная информация может быть доступна только зарегистрированным пользователям. Для этого имеется раздел “Авторизация”.

Авторизация на сайтах

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

Обход страниц сайта

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

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

Настройка обхода страниц сайта

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

Список отелей Киева на booking.com

Получившийся урл скопировал в поле “Список начальных URL”.

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

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

Сбор ссылок

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

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

Помощник

Чтобы им воспользоваться, нажимаем одноименную кнопку. В открывшееся окно вставляем урл первой страницы со списком отелей и нажимаем кнопку “Переход”. В правой части окна откроется нужная нам страница, а в левой будет показан ее html код.

Страница сайта в помощнике

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

XPath выражение для страницы отеля

Обратите внимание на выпадающий список справа, содержащий цифры от 1 до 20. Через него можно выбрать другие части html кода страницы, соответствующие XPath выражению. В данном случае таких частей 20, как и отелей на странице. Т.е. Datacol сможет получить все 20 ссылок на описания отелей.

Теперь прокручиваем страницу вниз до постраничной навигации. Надо указать ссылки, по которым парсер сможет пройти по другим страницам списка отелей. Для этого можно кликнуть правой кнопкой мыши по ссылке “Следующая страница”. В результате помощник подберет для этой ссылки XPath выражение:

XPath выражение для постраничной навигации

Человеческим языком это означает: найти html тег <a> с атрибутом class равным “paging-next ga_sr_gotopage_2_21”. К сожалению, на второй странице ссылка для перехода к следующей странице выводится уже не с классом ga_sr_gotopage_2_21, а с классом ga_sr_gotopage_3_21 и наше XPath выражение не сможет его выбрать.

Придется воспользоваться головой и написать свой вариант:

Это выражение будет получать ссылку “Следующая страница” правильно.

Сбор данных

Перейдем теперь непосредственно к парсингу информации об отелях. Для этого открываем вкладку “Сбор данных”.

Три уровня табов

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

Ладно, если один раз разобраться, то в дальнейшем особых сложностей с управлением не возникает. Слева сразу выбираем “Поля данных”. Для простоты будем парсить только 4 поля: Название и описание отеля и фотографии (полноразмерные и превью).

Нажимаем кнопку “Добавить” и вводим название поля, которое будет содержать название отеля (я назвал его HotelName). После этого открываем помощник, указываем урл с описанием отеля (любого) и кликаем на названии правой кнопкой мыши.

Теперь аналогично добавляем поле для описания отеля. С помощью помощника получим такое XPath выражение:

К сожалению, с его помощью парсится только первый абзац описания. Чтобы получить полное описание меняем тип поля на “статическое” и выбираем “Сохранять теги” (не обязательно, но пригодится для сохранения разбивки по абзацам).

Сбор описания отеля

Теперь надо переключиться на вкладку “Статические” и убрать запятую из поля “Строка объединения”.

Вкладка "Статические" для описания отеля

Этими настройками мы указываем программе собрать все подходящие куски html кода. В данном случае это все абзацы описания отеля.

Теперь создадим поля полноформатных и превью фотографий отеля (ImageLarge и ImageSmall). С помощью помощника получим такое XPath выражение:

XPath выражение для фотографий отеля

С помощью этого XPath вырезается кусок html, показанный в правой части окна помощника. Желтым я выделил те части, которые содержат нужные ссылки на фотографии (определил опытным путем). Мы их получим чуть позже, а сейчас копируем XPath в поле “XPATH вырезания” для обоих полей, выставляем тип поля в “Статическое” и выбираем “Сохранять теги”.

Настойки парсинга полей фотографий отеля

На вкладке “Статические” можно оставить запятую или использовать другой символ-разделитель.

Datacol умеет не только получать ссылки на изображения, но и скачивать их на компьютер (и даже заливать на ваш ftp сервер). Для этого служит закладка “Загрузка файлов”. Кроме того, этот же функционал поможет нам выделить “чистые” урлы фотографий.

Загрузка файлов

Итак, отмечаем “Загружать файлы”.

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

Виртуальный путь – это тот путь, где будут лежать файлы на вашем сайте. Вместе с настройкой “Возвращать виртуальные пути” этот параметр влияет на конечный урл изображения. Я установил значение “/”, т.е. папка с изображениями будет находиться в корне сайта.

Настройка “Оставлять существующие” означает, что если файл уже скачан, то загрузка повторяться не будет (удобно при тестировании кампании).

Генерация подпапок будет происходить по заданной формуле, где %HotelName% – поле “Название отеля”. Т.е. фотографии отелей будут разложены по соответствующим папкам.

Наконец, в последнее поле, “Правила идентификации ссылки”, запишем следующее регулярное выражение:

Оно будет применено к куску html кода, вырезаемом XPath выражением выше и означает, что надо вернуть текст в кавычках после “data-resized=”, т.е. путь к полноразмерной фотографии.

Уменьшенные (превью) фотографии отелей получаются точно так же, меняется только регулярное выражение для ссылки и формула.

Настройки для превью отелей

Все! Парсинг отелей настроен! Можно сохранять кампанию и запускать процесс.

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

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

Дополнительно

Расширение функциональности с помощью плагинов

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

Планировщик

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

Загрузка файлов по ftp

Я показал, как настроить скачивание фотографий с сайта-донора. Дополнительно можно автоматически загружать скачанные файлы на ваш сайт через ftp.

Экспорт

Результаты парсинга можно экспортировать в несколько форматов: текст, Excel, MySql, WordPress. С помощью плагинов можно добавлять другие форматы экспорта.

Форум

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

Datacol-forum-01

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

Кстати, насчет регулярных выражений: в данном примере я везде использовал XPath (кроме получения ссылок на изображения). Вместо XPath можно использовать регулярные выражения. Но проблема в том, что они разработаны для регулярных текстов, а html таковым не является. Это значит, что в общем случае вы не сможете получить произвольный кусок html.

Недостатки

Немного подытожу недостатки программы.

Очень запутанный интерфейс

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

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

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

Получение данных методом POST

Datacol умеет получать странички только методом GET. На некоторых сайтах при отправке формы используется метод POST и в этом случае вы не сможете воспользоваться этой программой.

Что можно улучшить

Я не специалист в области интерфейсов, но все же попытаюсь дать несколько советов разработчикам.

  1. Дерево кампаний на главном экране программы – в топку. Кто работает сразу с несколькими кампаниями? Сделайте открытие и сохранение кампании, как документа Word или проекта Visual Studio. Все настройки парсинга должны происходить в главном окне.
  2. Табы – в топку. Я хочу видеть что за чем идет, а не переключаться между закладками. В идеале хотелось бы видеть что-то типа Yahoo Pipes.
  3. Установите на своем сайте Wiki и вносите в нее всю информацию по настройкам. На вопросы пользователей давайте ссылки на Wiki или отвечайте. Не посылайте их на три буквы!

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

Несмотря на мою критику, Datacol имеет немало преимуществ:

  • Широкие возможности настройки
  • Помощник составления строк вырезания (киллер фича приложения)
  • Расширение функциональности с помощью плагинов
  • Возможность автоматизации постинга данных на свой сайт
  • Возможность получить решение своих задач за дополнительную плату

Заключение

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

  • Artur Najaryan

    ничего не запутан интерфейс, удобнее я и не встречал

    • Надо сказать, что у них и конкурентов не много, так что “не встречал” – это не показатель.

  • Антон

    Что сказать…выбирал я из двух парсеров Datacol5 и Content Downloader X

    Скажу про CD, читал что он сложный, поэтому отталкивало от него…да он сложноват, НО гибкие настройки, очень хороший мануал, автор всегда и быстро отвечает на вопросы БЕСПЛАТНО…Разобраться в нем не предоставило труда, пусть и не быстро..но я разобрался! И цена радует 2000 т.р.

    Теперь о Datacol5…

    Все писали что прога легкая, и вообще ахренеть какая, круче только горы…

    Да, прога автоматизированнее чем CD…но вы видели их мануал? в три строчки, и видео, где они парсят свои триальные сайты и блоги, самые наипростейшие! А как дело доходит до реального сайта так тут начинается танец с бубном! Админы на вопросы не отвечают, а если и отвечают то через пару дней, и постоянно посылают читать свой мануал или говорят пишите нам мы вам за бабки поможем, или типо под ваш сайт надо писать плагин наша прога это не умеет…В общем такое чувство, что они создали велосипед, только крутить педали надо руками, а управлять ногами, и это за прогу стоимостью 3500 т.р.

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

    • Спасибо за развернутый комментарий.

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

      Content Downloader не смотрел, так что не знаю, насколько он прост и удобен.

      • Антон

        Я про мануал у них на форуме говорил.
        А в самой проге много воды в хелпе, как толковый словарь, что такое “Сбор данных”, “Группа данных” и т.д. Возможности то описаны, а как их реализовать не описано.
        Автор создал машину и продает, а как ей пользоваться не описал, то ли сзади толкать, то ли спереди, то и вовсе запчастей не хватает. Напоминает российский автопром, Вы купите, а дальше еб…тесь сами.

        • Антон

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

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

          • Антон

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

  • Леся

    Кто разобрался с куками и авторизацией – помогите!

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

    • Slontus

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

  • Тьфу

    Короче шляпа, нифига не понял, плюнул и пошел искать другую прогу…

  • Slontus

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

    По мануалу: откровенное гуано, очень все обобщенно, не зная регулярных выражений, Хпас и Регекс, фиг , что сделаешь. Благо, что в сети полно учебников и под боком(теперь на зарплате))) препод из ВУЗа по программированию, можно хоть за консультацией обратиться.

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

    • Спасибо за подробный отзыв.
      Насчет мануала не соглашусь: там все возможности достаточно подробно расписаны. Проблема в запутанности интерфейса.

  • 123!!!!

    Перед покупкой Datacol (http://web-data-extractor.net/) не поленитесь прочесть данный отзыв, это
    сэкономит ваши деньги.

    1.
    Тех. по может отвечать днями, а то и неделями,
    даже когда им платишь деньги.

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

    3.
    Абсолютно бестолковая тех.по, которая периодически
    спрашивает, как работает компания, которую они же и разработали!

    4.
    При каждой высказывание претензии, ответ один –
    Не нравится не используйте.

    5.
    При доработках пишу, что если вы оплатили
    компанию, значит вы её проверили, и доработки не принимаются, даже если это
    указано у них же в правилах.

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

    О программе:

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

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

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

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

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

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

    Любые корректировки настроек, плагинов, индивидуальных
    разработок (помимо исправления багов)

    Получили данный ответ:

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

    На возражение о том, что:

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

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

    В итоге после поиска
    по поводу данной компании, было найдено огромное кол-во отзывов,
    практически идентичных с моим

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

    • Решил заапрувить ваш отзыв, несмотря на то, что вы его копи-пастите везде, где можно. Его суть можно было выразить гораздо короче: поддержка программы практически отсутствует. Я, кстати, об этом упомянул в статье.

  • Anton

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

    А по результатам, на демке получилось за пару дней настроить парсер магазина Ламода для своего сайта http://www.salegid.com.ua/ (сорри за ссылку, не удержался:), надеюсь пропустите за комментарий). Результаты в скрине

    • > главное – это изучить логику регулярных выражений и XPath
      Главная фишка программы как раз в том, что можно даже без понимания XPath настраивать парсинг.

      > получилось за пару дней настроить парсер магазина Ламода
      А разве партнерки (Адмитад и т.п.) не отдают эти данные в XML?
      И не запрещает ли Ламода использовать данные со своего сайта?

      • Anton

        Ну как вам сказать…, честно, без понимания регулярок вообще не представляю как можно там что-то настроить. Помощник их оставляет желать лучшего, там даже элементарного поиска по коду нет.
        Я для себя взял такую механику: если вижу, что поле простое (например название товара), то пробую через Помощник найти XPath (получается бытро). Но часто нужно и что-то сложное, например понаходить пути к большим фоткам на той же Ламоде, то тут уже нужно открывать Chrome DevTools, смотреть код копировать его в Помощник и там преобразовывать его в регулярку.

        Отдают (правда я работаю с украинской партнеркой), но фиды, как правило, очень корявые в них нет многих нужных данных (доп. фото, параметры, даже reg_price многие не дают – а для меня это критично), поэтому нашел выход – парсить. Не знаю как Ламода.ру, но Ламода.юа разрешает после аппрува брать контент, то есть если сайт не ГС или дор, то договорится можно.

        • Спасибо за пояснения, теперь ясно (насчет Ламоды).

          Как по мне, DataCol удобен для простых случаев. Если же надо парсить что-то сложное, то проще будет написать плагин на PHP (если есть знания, конечно).

  • Вадим Бойко

    :) Разобраться можно, но сложно. Одним словом, автопром :)

  • Vitaliy

    Датакол это универсальный комбайн, и в 7-я версия далеко ушла от описанной 5й. И самое главное теперь есть много видео по настройке и поменялась справка о работе программы.
    Также прошу в гости на мой блог о парсинге с помощью Датакол http://bestweb4u.net

    • > 7-я версия далеко ушла от описанной 5й
      Надеюсь, они улучшили интерфейс :-)

      А вы как-то связаны с разработчиками или блог про Датакол – это ваша личная инициатива?

      • Vitaliy

        Нет, не связан. Это мой личный блог и наработки.

  • Dramorian

    Было б прикольно, если бы он генерировал PHP скрипт для парсинга.