Веб-скраперы
Создание скрипта на любом языке программирования
При создании веб-скрапера важно знать, что узел Интернет выполняет скрапер через командную строку. Интерфейс командной строки веб-скрапера должен принимать конфигурационный файл формата JSON и при необходимости поддерживать два флага (опции): --help
и --features
.
После того, как пользователь выберет веб-скрапер в выпадающем меню в окне настроек узла Интернет, PolyAnalyst вызывает скрапер дважды с помощью каждого флага, узнает характеристики скрапера (дополнительные колонки в таблице, параметры веб-скрапера) и получает описание скрапера, которое будет отображаться пользователю. Флаги можно опустить, но в этом случае пользователь не сможет добавить колонки и параметры, и скрапер не будет иметь описания.
Сообщение скрапера Usage
может выглядеть следующим образом:
Конфигурационный файл
Исходный конфигурационный файл с параметрами узла Интернет, который PolyAnalyst отправляет веб-скраперу, содержит JSON-объект следующего вида:
где:
-
url
– строка со списком URL из узла Интернет (строковые данные). -
params
– содержимое параметров. -
maximum_rows
– значение опции Максимальное число строк, которое может вернуть скрапер, настраиваемой в Административном клиенте (числовые данные). -
output_folder
– директория, в которой будут сохранены результаты скрапинга (строковые данные). -
log_folder
– директория, в которой будут сохранены лог-файлы скрапера (строковые данные). -
debug_mode
– значение параметра Debug/ScraperDebug в файле "paserver.xml", которое может быть использован для настройки журналирования (булевые данные). -
work_mode
– режим запуска PolyAnalyst: 1 – PolyAnalyst запускается как "служба", 2 – "в трее", 3 – "через командную строку" (числовые данные). -
stop_file
– имя файла, которое отображается в директории "output_folder". Он говорит о том, что пользователь пытается остановить работу скрапера (строковые данные).
Флаги (Опции)
Флаги (опции) командной строки:
Оба файла будут пустыми.
При вызове веб-скрапера с помощью флага --help
формат файла не имеет значения. PolyAnalyst отобразит содержимое этого файла в виде простого текста.
При вызове веб-скрапера с помощью флага --features
JSON-объект, который веб-скрапер записывает в файл, должен содержать ключи columns
и params
; каждая дополнительная колонка – объект с ключами name
и type
, которые включаются в ряд columns
.
Пример:
где:
-
columns
– набор объектов. Объект должен содержать параметры name и type.-
name
– имя дополнительной колонки. -
type
– иип данных колонки.
-
-
params
– строка, которая отображается в параметрах.
Ниже приводится неполный список поддерживаемых типов данных в колонках:
-
$bool
– булевые данные -
$cat_string
– строковые данные -
$num
– числа с плавающими точками -
$num_int
– целые числа -
$num_datetime
– дата/время. Формат записи зависит от настроек пользователя.
Файл с результатами
Для того, чтобы отправить извлеченные веб-скрапером данные в PolyAnalyst, необходимо создать файл в выходной папке "output_folder", указанной в конфигурационном файле, и объект JSON в следующем формате:
Каждая запись в таблице узла Интернет – объект в массиве docs
.
-
url
– строка, которая не отображается в интерфейсе. -
docurl
– значение записи в колонке URL. Оно должно быть уникальным, в противном случае PolyAnalyst перепишет ранее переданную запись с совпадающим параметромdocurl
. -
title
– значение записи в колонке с заголовками Title. -
mime
не используется. PolyAnalyst определяет этот параметр самостоятельно, анализируя строкуcontent
. -
content
– строка с кодировкой Base64. Значение записи в колонке с текстовым содержимым "Text content". -
columns
– объект, который содержит пары имен дополнительных колонок – значение, указанное в файле при открытии скрапера с флагом "--features". -
files
– объект, который может не иметь параметров. Имя параметра должно содержаться в строкеcontent
, значение – строка в кодировке Base64. Используется для сохранения изображений и CSS.
Регистрация скрипта в Административном клиенте
Для того, чтобы зарегистрировать веб-скрапер в PolyAnalyst, выполните следующие шаги:
-
Откройте Административный клиент;
-
В Настройках сервера найдите раздел Подключение к данным;
-
Нажмите правой кнопкой мыши на раздел Веб-скраперы и выберите Добавить элемент. Или в появившемся окне нажмите на знак для добавления элемента;
-
В поле Имя введите название скрапера. Это название будет отображаться в выпадающем меню Скрапер в узле Интернет;
-
В поле Команда введите команду;
-
В поле Максимальное число строк при необходимости укажите максимальное количество записей, при достижении которого PolyAnalyst попытается остановить скрапер. При 0 ограничений нет.
-
Нажмите Сохранить изменения, чтобы применить настройки и закрыть окно.
Пример регистрации скрапера представлен ниже:
Команда скрапера должна состоять из одной или двух частей: путь до исполняемого файла (в случае с интерпретируемыми языками – путь до интерпретатора) и путь до скрипта через пробел (см. скриншот выше). Конфигурационный файл и параметры с флагами --help
и --features
указывать не нужно, их добавит PolyAnalyst при выполнении скрапера. В поле Команда можно указать другие параметры, если необходимо, кроме --help
и --features
.
После того, как вы зарегистрируете скрипт в системе PolyAnalyst, данный скрапер будет доступен для использования. Он будет отображаться в выпадающем меню Скрапер в окне настроек узла Интернет.
Шаблон и пример скрипта Python
Шаблон и пример скрапера можно найти здесь.