Парсер контента по списку URL на базе Datacol

Lasto's Abductor, Похититель буковок Lasto's Abductor, Похититель буковок

Парсер контента по списку URL на базе Datacol

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

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

Для этой несложной задачи можно привлечь любой парсер, хотя бы Datacol - пошагово опишем все необходимые действия.

1. Нажимаем в главном окне программы Ctrl+N. Видим окно настроек парсера. В первой вкладке "Общие настройки" вводим название парсера ContentByUrls и количество потоков 5. Нажимаем Сохранить.

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

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

Итак поле, Header.

В общем случае заголовок задается тегом h1,h2 или h3, ну или в крайнем случае можно использовать title. Таким образом, для получения заголовка нам нужно вырезать значение тега h1 или h2. Для такого вырезания лучшим образом подойдет XPATH выражение. Выглядеть оно будет так:

//h1|//h2

Теперь введем эти настройки и добавим поле "Header".

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

Заполнив дополнительные настройки, жмем кнопку "Сохранить".

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

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

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

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

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

Настройки довольно интуитивны. Уточню только по поводу объединения значений.

Поскольку мы отметили эту галочку, все найденные значения поля "Content" будут объединены в результирующей таблице результатов. "Склеивать" значения поля Content будет перенос строки (%NL% это специальный метатег Datacol, означающий перенос строки в текстовом файле).

Итак, сбор данных мы настроили, теперь переходим на вкладку "Навигация".

Здесь необходимо создать общий формат URL, который будет соответствовать любому URL, подлежащему обработке. Для этого оставляем строку соответствия пустой, вводим только название формата (назовем его general).

Далее снимаем чекбокс "Группировать поля" (ведь по логике нашей задачи, поля могут вырезаться в независимости друг от друга). Также снимаем чекбокс "Содержит ссылки", поскольку мы не собираемся собирать ссылки со страниц для прохода вглубь сайтов.

Для данного конкретного случая настройка форматов URL окончена. Не забудьте только нажать кнопку "Сохранить".

Теперь можно протестировать сбор данных на одном из URL из начального списка.

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

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

Далее переходим на вкладку "Произвольный". Здесь необходимо ввести формулу для генерации файла произвольного формата. У нас она будет выглядеть следующим образом:

<h1>%Header%</h1>

<div class="content">%Content%</div>

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

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

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

Заметьте, что всё это делается один раз, и дльше нам нужно будет всего лишь менять набор начальных URL.

Подробнее: Парсеры - Datacol

Поделиться статьёй с друзьями:

Другие статьи раздела "Парсинг контента":

  1. 18.01.13 Мнение: Сео софт - x-parser
  2. 17.01.13 Парсер контента по списку URL на базе Datacol
  3. 14.01.13 Content Monster II в режиме парсера. Что да как.
  4. 13.01.13 Парсинг поисковой статистики Яндекс
  5. 11.01.13 Парсинг контента для сайта блога или интернет магазина.
  6. 10.01.13 Как составить семантическое ядро?
  7. 09.01.13 Бесплатные парсеры контента
  8. 07.01.13 Parser 8.5: парсинг товаров для экспорта любую CMS.
Прыг: 01 02 03 04