• Обзор
  • Отзывы
  • Обсуждение (7)

WebDataExtractor

Этот неторгующий эксперт предназначен для преобразования неструктурированной информации веб-страниц в структурированные табличные данные. Он скачивает и парсит HTML файл, создает по нему иерархию объектов DOM (Document Object Model), затем применяет указанные селекторы CSS (Cascading Style Sheets, англ.) для требуемых полей данных и выделяет для них конкретные значения. Иными словами, это - мощный, настраиваемый конвертер из HTML в CSV (Comma-Separated Values).

Эксперт может обрабатывать страницы сайтов (с помощью WebRequest МетаТрейдера) или локальные файлы. Для использования WebRequest предварительно убедитесь, что соответствующий домен добавлен в диалоге настроек Экспертов.

Демо-версия эксперта и даже полная версия, запущенные в тестере стратегий, не могут использовать WebRequest из-за ограничений МетаТрейдера. В тестере доступны только локальные файлы.

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


Параметры

  • URL - адрес веб-страницы (начинается с http:// или https://) или имя локального файла (должен быть в формате HTML);
  • SaveName - имя выходного файла (в CSV формате);
  • TimerSeconds - периодичность перезагрузки URL и его обработки; 0 означает, что процесс будет выполнен только 1 раз и затем эксперт выгрузит себя;
  • TriggerVariable - опциональная глобальная переменная для проверки во время срабатывания таймера; если указана, эксперт проверяет, есть ли она: если да - EA начинает обработку и затем удаляет переменную, если нет - EA пропускает этот вызов таймера и ждет следующего;
  • RowSelector - CSS селектор для выделения строки таблицы с данными;
  • ColumnSettingsFile - файл в формате CSV с селекторами для колонок (см. описание в комментариях);
  • SubstitutionSettingsFile - опциональный файл в формате CSV с правилами замен (см. описание в комментариях);
  • TestQuery - тестовый CSS селектор для строки таблицы;
  • TestSubQuery - тестовый CSS селектор для колонки в строке;
  • LogXXX - включение/отключение опции логгирования XXX;


Принцип действия

Для выделения данных необходимо исследовать исходный код (HTML) целевой веб-страницы. Это можно сделать в любом современном браузере с помощью встроенных средств веб-разработчика. Например, в Хроме можно открыть окно "Developer tools" нажав кнопку "Настройки" (в верхнем правом углу главного окна), а затем в выпадающем меню: "Tools" -> "Developer Tools" (структура меню может меняться от версии к версии браузера). Подробности - в официальном описании инструментов разработчика - DevTools overview (англ.). Наиболее важным для нас является раздел Inspecting the DOM (англ.).

Пользователь должен найти на странице все интересующие его поля и сопоставить их с соотствующими элементами DOM в HTML. На основе характерных аттрибутов этих элементов можно составить подходящие CSS селекторы, которые однозначно выделяют значение для каждого поля данных. В окно разработчика есть командная строка, где можно вводить CSS селекторы и проверять их работу на лету. Однако следует учесть, что эксперт поддерживает ограниченный набор селекторов.

Другой способ анализа предполагает, что нужно включить логгирование DOM в эксперте (LogDomElements) и изучить журнал экспертов МетаТрейдер. Это не столь наглядно и оперативно, но не требует внешних инструментов. Для тестирования селекторов их можно вводить в параметры TestQuery и TestSubQuery. Рекомендуется делать это на локальном файле (URL должен быть именем файла, а не адресом интернет). Для скачивания веб-страницы в локальный файл задайте параметры следующим образом: URL - адрес страницы в интернет, SaveName - имя файла для записи (если он существует, то будет перезаписан), RowSelector - пустой.


Поддерживаемые CSS селекторы

Подробности указаны в Обсуждении.


Примеры

Примеры приведены также в Обсуждении.

Нет отзывов