Chrome Парсер

В качестве одного из источников сделок в amoCRM может быть расширение для браузера Google Chrome – парсер сайтов. С любого сайта можно получать заявки, предварительно настроив парсер вручную или через пресет. Настройка вручную не всегда позволяет выбрать только нужные данные, поэтому в данной статье рассмотрим работу с парсером через пресеты.

Для создания собственного пресета достаточно будет знаний работы CSS-селекторов. В рамках домена сайта может работать только один пресет. Пресет представляет собой JSON-файл следующего содержания:

{
  "version": 1,
  "fields": [
    {
      "clicks": [
        {
          "selector": ".selector-to-open-some-modal",
          "wait_selector": ".some-modal-appears-after-click",
          "timeout": 500
        }
      ],

      "title": "Бюджет",
      "code": "price",
      "type": "lead_budget",
      "selector": ".selector-to-get-the-budget",
      "value_type": "text",
      "value_cleaner": ["[^\\d]+"]
    }
  ]
}

Ключ version заложен для будущих версий и сейчас не несёт смысловой нагрузки. Самый важный параметр здесь это fields – массив полей доступных для парсинга. Каждое значение элемента fields имеет следующие обязательные параметры:

  • title – человеко-понятное название поля, чтобы клиент понял в какое поле аккаунта ему настроить соответствие
  • code – уникальный идентификатор поля в рамках пресета
  • selector – CSS-селектор элемента на странице
  • type – тип поля, необходим для первоначальной автоматической подстановки соответствия с полями из аккаунта клиента (например, для поля numeric парсер автоматически будет искать первое попавшееся числовое поле в аккаунте клиента, но клиент его может самостоятельно переназначить на другое поле при настройке)
    • lead_name – название сделки
    • lead_budget – бюджет сделки
    • lead_note – примечание сделки
    • contact_name – имя контакта
    • position – должность контакта
    • phone – телефон
    • email – email
    • company_name – название компании
    • text – текстовое поле доп. полей
    • numeric – число
    • select – выпадающий список
    • multiselect – множественный выбор
    • date – дата
    • date_time – дата и время
    • url – URL
    • textarea – текстовая область
    • radiobutton – переключатель
    • streetaddress – короткий адрес

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

  • value_type – может быть либо text, либо html, если text, то будет только текстовое значение, если html, то вместе с html-тегами (если вдруг значение нужно взять из какого-то атрибута)
  • value_cleaner – регулярное выражение для очистки полученного значения, например, оставить только цифры. Может быть массивом, например, убрать начало строки до какой-то подстроки и потом удалить еще какую-то подстроку
  • clicks – массив кликов перед парсингом, если для получения значения поля необходимо сделать какие-то клики по элементам на странице – их можно описать в этом массиве. Синтаксис каждого поля:
    • selector – CSS-селектор элемента, по которому нужно кликнуть
    • wait_selector – CSS-селектор элемента, который нужно дождаться, прежде чем сделать следующий клик из данного массива
    • timeout – таймаут для wait_selector, если он так и не появился на странице, либо (если вы не указывали wait_selector) таймаут до следующего клика

Скачать примеры пресетов. В архиве примеры пресетов для парсинга:

Авто.ру (auto.ru)

HeadHunter (hh.ru)