Парсер контента по списку URL на базе Datacol
Парсинг контента довольно распространенная задача. Чаще всего контент парсится по ключевикам или по списку URL.
Создать парсер для автоматического получения контента со списка URL. Контент должен очищаться от тегов (кроме тега абзаца p и тега переноса строки br) и знаков табуляции. Экспорт должен производиться в текстовый файл со следующей структурой:

Работу данного профиля настроек вы можете потестировать сразу после установки Datacol. Демонстрационный профиль настроек называется ContentByUrls. Поскольку демо версия Datacol не умеет сохранять результаты в файл, для просмотра результатов после запуска парсера необходимо перейти на вкладку Результаты.

Поскольку начальные URL содержат только 5 ссылок и прохождения вглубь сайтов не происходит, 5 потоков парсера практически моментально справляются с парсингом и сохранением результатов.
Для этого примера я пошагово опишу все действия.
1. Нажимаем в главном окне программы Ctrl+N. Видим окно настроек парсера. В первой вкладке Общие настройки вводим название парсера ContentByUrls и количество потоков 5. Нажимаем Сохранить.

2. Переходим на вкладку Начальные URL. Вводим список URL, с которых мы хотим получить контент и устанавливаем Глубину парсинга равной нулю (чтобы парсер собирал контент только с начальных URL и не шел вглубь сайтов). Жмем кнопку Сохранить.

3. Переходим на вкладку Сбор данных. Нам необходимо создать 2 поля: Header (заголовок) и Content (контент). Поскольку мы делаем настройку не под конкретный сайт, а под список URL, и кроме того знаем, что список может меняться, то нет смысла подстраивать парсер под верстку конкретных сайтов. Таким образом, нам для обоих полей необходимо реализовать что-то вроде общего случая. Поэтому здесь можно даже не прибегать к помощи встроенного браузера.
Итак поле, Header. В общем случае заголовок задается тегом h1,h2 или h3, ну или в крайнем случае можно использовать title. Таким образом, для получения заголовка нам нужно вырезать значение тега h1 или h2. Для такого вырезания лучшим образом подойдет XPATH выражение. Выглядеть оно будет так:
Теперь введем эти настройки и Добавим поле Header.

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

Заполнив дополнительные настройки, жмем кнопку Сохранить.
Пробуем тестировать работу настроек на одном из URL, которые ранее ввели в список начальных:

И получаем результат:

Теперь необходимо настроить поле Content. Нажимаем кнопку Сохранить, чтобы поле Header сохранилось. Затем нажимаем кнопку Сброс, вводим название нового поля и нажимаем кнопку Добавить. Теперь можно приступать к настройке.

Для поля Content мы будем собирать все блоки все абзацы p.

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

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

Отсалось ввести настройки на вкладке Дополнительно:

Настройки довольно интуитивны. Уточню только по поводу объединения значений. Поскольку мы отметили эту галочку, все найденные значения поля Content будут объединены в одно в результирующей таблице результатов. «Склеивать» значения поля Content будет перенос строки (%NL% это специальный метатег Datacol, означающий перенос строки в текстовом файле).
Итак, сбор данных мы настроили, теперь переходим на вкладку Навигация. Здесь необходимо создать общий формат URL, который будет соответствовать любому URL, который будет обрабатываться. Для этого оставляем строку соответствия пустой, вводим только название формата (назовем его general). Далее снимаем чекбокс Группировать поля (ведь по логике нашей задачи поля могут вырезаться в независимости друг от друга. Также снимаем чекбокс Содержит ссылки, поскольку мы не собираемся собирать ссылки со страниц для прохода вглубь сайтов. Для данного конкретного случая настройка форматов URL окончена. Не забудьте только нажать кнопку Сохранить.
Теперь можно протестировать сбор данных на одном из URL из начального списка.

Таким образом, мы получим следующие результаты:

Теперь осталось настроит экспорт результатов в текстовый файл. Заходим на вкладку Экспорт и добавляем Произвольный формат под названием txtexport.

Далее переходим на вкладку Произвольный. Здесь необходимо ввести формулу для генерации файла произвольного формата. У нас она будет выглядеть следующим образом:
Здесь же вводим название файла, расширение, а также указываем путь к папке для сохранения. В результате значение поля Header и Content с каждой новой страницы будут дописываться в файл contentresults.txt, находящийся в указанной папке.

Вот таким образом, мы довольно быстро создали довольно универсальный парсер контента. Безусловно, данные настройки нельзя назвать на 100% универсальными, но учитывая возможности и гибкость Datacol их можно легко усовершенствовать, чтобы в результате получить парсер контента, который будет правильно собирать контент практически с любых URL. Заметьте, что при этом вам нужно будет всего лишь менять набор начальных URL.
Файл профиля настроек для парсер контента по списку URL можно просмотреть здесь. Его также можно сохранить себе на компьютер и скопировать в папку с профилями настроек Datacol (ее можно открыть нажав Ctrl+E в главном окне программы). Это на случай, если вы удалили демонстрационный профиль, который создается при установке программы.









