Веб-скраперы

Создание скрипта на любом языке программирования

При создании веб-скрапера важно знать, что узел Интернет выполняет скрапер через командную строку. Интерфейс командной строки веб-скрапера должен принимать конфигурационный файл формата JSON и при необходимости поддерживать два флага (опции): --help и --features.

После того, как пользователь выберет веб-скрапер в выпадающем меню в окне настроек узла Интернет, PolyAnalyst вызывает скрапер дважды с помощью каждого флага, узнает характеристики скрапера (дополнительные колонки в таблице, параметры веб-скрапера) и получает описание скрапера, которое будет отображаться пользователю. Флаги можно опустить, но в этом случае пользователь не сможет добавить колонки и параметры, и скрапер не будет иметь описания.

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

scraper.py [--help [FILE]] [--features FILE] FILE

Конфигурационный файл

Исходный конфигурационный файл с параметрами узла Интернет, который PolyAnalyst отправляет веб-скраперу, содержит JSON-объект следующего вида:

{
    "url": "http://www.example.com/",
    "params": "",
    "maximum_rows": 10,
    "output_folder": "C:\\Megaputer Intelligence\\PolyAnalyst 6.5 Server 64-bit\\UsersHome\\Temp\\562bea05-14a7-431d-8630-545f3c719062",
    "log_folder": "C:\\Megaputer Intelligence\\PolyAnalyst 6.5 Server 64-bit\\Profiles\\User\\LogFiles",
    "debug_mode": false,
    "work_mode": 2,
    "stop_file": "STOP"
}

где:

  • 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 [FILE]     Файл, который будет содержать пользовательское описание веб-скрапера в виде простого текста
--features FILE   Файл, который будет содержать все специфические параметры веб-скрапера в формате JSON

Оба файла будут пустыми.

При вызове веб-скрапера с помощью флага --help формат файла не имеет значения. PolyAnalyst отобразит содержимое этого файла в виде простого текста.

При вызове веб-скрапера с помощью флага --features JSON-объект, который веб-скрапер записывает в файл, должен содержать ключи columns и params; каждая дополнительная колонка – объект с ключами name и type, которые включаются в ряд columns.

Пример:

{
    "columns": [
        {
            "name": "Author",
            "type": "$cat_string"
        }
    ],
    "params": "[DEFAULT]\nauthor = "
}

где:

  • columns – набор объектов. Объект должен содержать параметры name и type.

    • name – имя дополнительной колонки.

    • type – иип данных колонки.

  • params – строка, которая отображается в параметрах.

Ниже приводится неполный список поддерживаемых типов данных в колонках:

  • $bool – булевые данные

  • $cat_string – строковые данные

  • $num – числа с плавающими точками

  • $num_int – целые числа

  • $num_datetime – дата/время. Формат записи зависит от настроек пользователя.

Файл с результатами

Для того, чтобы отправить извлеченные веб-скрапером данные в PolyAnalyst, необходимо создать файл в выходной папке "output_folder", указанной в конфигурационном файле, и объект JSON в следующем формате:

{
    "docs": [
        {
            "url": "https://example.com/",
            "docurl": "https://example.com/",
            "title": "Example Title",
            "mime": "text/html",
            "content": "...",
            "columns": {
                "Author": "John Doe"
            },
            "files": {}
        }
    ]
}

Каждая запись в таблице узла Интернет – объект в массиве docs.

  • url – строка, которая не отображается в интерфейсе.

  • docurl – значение записи в колонке URL. Оно должно быть уникальным, в противном случае PolyAnalyst перепишет ранее переданную запись с совпадающим параметром docurl.

  • title – значение записи в колонке с заголовками Title.

  • mime не используется. PolyAnalyst определяет этот параметр самостоятельно, анализируя строку content.

  • content – строка с кодировкой Base64. Значение записи в колонке с текстовым содержимым "Text content".

  • columns – объект, который содержит пары имен дополнительных колонок – значение, указанное в файле при открытии скрапера с флагом "--features".

  • files – объект, который может не иметь параметров. Имя параметра должно содержаться в строке content, значение – строка в кодировке Base64. Используется для сохранения изображений и CSS.

Регистрация скрипта в Административном клиенте

Для того, чтобы зарегистрировать веб-скрапер в PolyAnalyst, выполните следующие шаги:

  • Откройте Административный клиент;

  • В Настройках сервера найдите раздел Подключение к данным;

  • Нажмите правой кнопкой мыши на раздел Веб-скраперы и выберите Добавить элемент. Или в появившемся окне нажмите на знак с изображением плюса для добавления элемента;

  • В поле Имя введите название скрапера. Это название будет отображаться в выпадающем меню Скрапер в узле Интернет;

  • В поле Команда введите команду;

  • В поле Максимальное число строк при необходимости укажите максимальное количество записей, при достижении которого PolyAnalyst попытается остановить скрапер. При 0 ограничений нет.

  • Нажмите Сохранить изменения, чтобы применить настройки и закрыть окно.

Пример регистрации скрапера представлен ниже:

registering web scrapers.rus

Команда скрапера должна состоять из одной или двух частей: путь до исполняемого файла (в случае с интерпретируемыми языками – путь до интерпретатора) и путь до скрипта через пробел (см. скриншот выше). Конфигурационный файл и параметры с флагами --help и --features указывать не нужно, их добавит PolyAnalyst при выполнении скрапера. В поле Команда можно указать другие параметры, если необходимо, кроме --help и --features.

После того, как вы зарегистрируете скрипт в системе PolyAnalyst, данный скрапер будет доступен для использования. Он будет отображаться в выпадающем меню Скрапер в окне настроек узла Интернет.

Шаблон и пример скрипта Python

Шаблон и пример скрапера можно найти здесь.