Найти информацию в интернете

Совет.

Сначала запустите проект в Песочнице. Так вы сможете избежать ошибок и потраченных средств, если окажется, что ваше задание не работает.

В проектах этого типа исполнители ищут в сети объект или информацию о нем. Вы можете использовать их для:
  • поиска объекта по описанию, например товара ли услуги;
  • поиска информации на определенном сайте, например городов доставки на сайте магазина;
  • поиска информации об объекте в интернете, например контактных данных организации.

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

  1. Создайте проект
  2. Создайте пул
  3. Загрузите TSV-файл с заданиями
  4. Получите результаты
  5. Поручите проверку исполнителям
  6. Решение проблем

Создайте проект

  1. Выберите шаблон:

    1. Нажмите кнопку + Создать проект.

    2. Выберите шаблон Поиск данных в сети.
  2. Заполните общую информацию:

    1. Дайте проекту понятное название и краткое описание. Их увидят исполнители в списке доступных заданий.

    2. По желанию добавьте Приватный комментарий.
    3. Нажмите кнопку Сохранить.
  3. Отредактируйте интерфейс задания:

    Примечание. В этом туториале показано, как создать интерфейс задания в редакторе HTML/JS/CSS. Вы также можете попробовать создать интерфейс задания в Конструкторе шаблонов.

    В разделе Спецификация данных можно настроить поля входных и выходных данных.

    Что такое входные и выходные данные?

    Входные данные — это данные, которые нужны для ваших заданий. Например, ссылки на картинки, которые вы хотите показать исполнителям.

    Выходные данные — это данные, которые получаются в результате выполнения заданий. Например, ответы исполнителя на ваши вопросы.

    Подробнее о полях входных и выходных данных.

    Примечание.

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

    Если вы используете регулярные выражения, то проект можно запустить с перекрытием больше единицы — чтобы каждое задание выполнило несколько человек. Тогда можно будет не использовать отложенную приемку и не проверять каждое задание, а довериться усредненным данным.

    1. Нажмите кнопку , чтобы переключить графический режим на формат JSON.

    2. В поле Входные данные введите следующий код:

      {
        "url": {
          "type": "url",
          "hidden": false,
          "required": true
        },
        "title": {
          "type": "string",
          "hidden": false,
          "required": false
        }
      }
    3. В поле Выходные данные введите следующий код:

      {
        "email": {
          "type": "string",
          "hidden": false,
          "pattern": "^[a-zA-Zа-яА-ЯёЁ0-9\\._-]+@[a-zA-Zа-яА-ЯёЁ0-9\\._-]+\\.[a-zA-Zа-яА-ЯёЁ]{2,}$",
          "required": false
        },
        "phone": {
          "type": "string",
          "hidden": false,
          "pattern": "^\\+?[0-9()\\s-]{4,}$",
          "required": false
        },
        "not_found": {
          "type": "boolean",
          "hidden": false,
          "required": false
        }
      }

      Подробнее о параметрах Спецификации данных читайте в разделе Входные и выходные данные.

      В разделе Интерфейс задания вы можете настроить внешний вид заданий для исполнителей.

      Подробнее об интерфейсе заданий.

      Заполните блоки HTML, JS и CSS.

      Код для блока HTML
      <!-- Кнопки для перехода на сайт организации и поиска по ее названию в Яндексе-->
      <div class="left">
        <div class="title">{{title}}
        </div>
        <div class="site-buttons">
          {{button label="Перейти на сайт" action=false href=url}}
          <a href="https://yandex.ru/search/?text={{title}}" target="_blank" class="btn_ya">Найти в Яндексе</a>
        </div>
      <!-- Поля для ввода телефона и электронной почты. Формат данных проверяется с помощью регулярных выражений. Выражение записано в параметр "Паттерн" выходных полей "phone" и "email". -->
        <div class="output-fields">
          <label><span>Телефон</span>{{field type="input" name="phone" placeholder="8 800 800 88 88"}}</label>
           <!-- Можно ввести только цифры, дефисы, знак +, пробелы и скобки. Символ "+" допустим только в первой позиции. Общий формат: +7(459)123-45-67, 8 800 123 45 67 -->
          <label><span>Почта</span>{{field type="input" name="email" placeholder="example@example.com"}}</label>
           <!-- Можно ввести только латинские буквы, точки, символы минус, плюс и нижнее подчеркивание. Общий формат: test.example@example.com -->
        </div>
      <!-- Чекбокс -->
       {{field class="site-buttons"type="checkbox" name="not_found" label="Нет контактов"}}
      </div>
      Код для блока JS
      exports.Task = extend(TolokaHandlebarsTask, function (options) {
        TolokaHandlebarsTask.call(this, options);
      }, {
        // Показываем сообщение об ошибке, если данные введены неверно или поля не заполнены.
        _addError: function (message, field, errors) {
          errors || (errors = {
            task_id: this.getOptions().task.id,
            errors: {}
          });
      
          errors.errors[field] = {
            message: message
          };
      
          return errors;
        },
      
        // Дописываем `https://` в начало ссылки, если его нет.
        _prepareURL: function (url) {
          if (!/^\s*https?:\/\//i.test(url)) {
            url = 'http://' + url.trim();
          }
      
          return url;
        },
      
        // Устанавливаем состояния полей.
        _renderField: function(values) {
          if (this.getWorkspaceOptions().isReadOnly) return;
      
          for (const field of ['email', 'phone']) {
            if (this.getField(field)) {
              const impl = this.getField(field).getImplementation();
              if (impl.options.disabled !== values.not_found) {
                impl.options.disabled = values.not_found;
                impl.render();
              }
      
              $('[name="' + field + '"]', this.getDOMElement())
                .parents('.field')
                .toggleClass('field_readonly', values.not_found);
            }
          }
          $('.popup_type_error', this.getDOMElement()).removeClass('popup_visible');
        },
      
        setSolutionOutputValues: function (values) {
          this._renderField(values);
      
          TolokaHandlebarsTask.prototype.setSolutionOutputValues.call(this, values);
        },
      
        onRender: function() {
          this._renderField(this.getSolution().output_values);
        },
      
        // Эти данные будут переданы в Handlebars-часть шаблона.
        getTemplateData: function () {
          const data = TolokaHandlebarsTask.prototype.getTemplateData.call(this);
      
          // Дописываем `http://` в начало ссылки, если нужно.
          data.url = this._prepareURL(data.url);
      
          return data;
        },
      
        // Проверяем ответы при отправке задания.
        validate: function (solution) {
          let errors;
          const output = solution.output_values;
      
          if (output.not_found) {
            delete output.email;
            delete output.phone;
      
          } else {
            const fields = ['email', 'phone'];
      
            // Показываем ошибку, если ни одно из полей не заполнено.
            if (!Object.entries(solution.output_values).find(e => fields.includes(e[0]) && e[1])) {
              for (const field of fields) {
                errors = this._addError(this.getWorkspaceOptions().translations['field:error:REQUIRED'], field, errors);
              }
            }
      
            delete output.not_found;
          }
      
          solution.output_values = output;
          return errors || TolokaHandlebarsTask.prototype.validate.call(this, solution);
        }
      });
      
      function extend(ParentClass, constructorFunction, prototypeHash) {
        constructorFunction = constructorFunction || function () { };
        prototypeHash = prototypeHash || {};
      
        if (ParentClass) {
          constructorFunction.prototype = Object.create(ParentClass.prototype);
        }
      
        for (var i in prototypeHash) {
          constructorFunction.prototype[i] = prototypeHash[i];
        }
      
        return constructorFunction;
      }
      Код для блока CSS
      /* Задание на странице */
      .task {
        width: 450px;
      }
      
      /* Кнопка "Найти в Яндексе" */
      .btn_ya {
        font-size: 13px;
        margin-left: 10px;
        color: #0065D9;
      }
      
      /* Заголовок с названием организации */
      .title {
        padding: 10px;
        border-radius: 5px;
        font-size: 18px;
        line-height: 24px;
      }
      
      /* Поля для ввода телефона и электронной почты */
      .output-fields {
        display: table;
        font-size: 13px;
        border-spacing: 0 5px;
      }
      
      .output-fields > label {
        display: table-row;
        margin-bottom: 5px;
      }
      
      .output-fields > label > span {
        display: table-cell;
        text-align: left;
        padding-right: 10px;
        padding-left: 10px;
      }
      
      .output-fields > label > .field {
        margin: 0;
        display: table-cell;
        width: 100%;
      }
      
      /* Кнопка для перехода на сайт организации */
      .site-buttons {
        margin: 10px;
        margin-left: 5;
      }
      
      /* Отображение задания на мобильных устройствах. */
      
      @media (pointer: coarse) {
        .field__hotkey {
          display:none;
        }
      }
      
      @media (max-width: 980px) {
        .task {
          width: initial;
        }
        .popup__text {
          width: auto;
        }
      }
      
      
    4. Нажмите кнопку , чтобы увидеть получившееся задание.

      Примечание. В предварительном просмотре проекта отображается одно задание со стандартными данными. Количество заданий на странице вы сможете настроить далее.
    5. В открывшемся окне проверьте работу опций задания:

      1. Ответьте на вопрос.

      2. В правом нижнем углу нажмите кнопку Отправить.

      3. Выйдите из режима предпросмотра.

    6. Нажмите кнопку Сохранить.
  4. Напишите инструкцию для исполнителей:

    1. Напишите краткую и ясную инструкцию (см. советы). Опишите в ней, что надо сделать, и приведите примеры.

      Вы можете подготовить инструкцию в формате HTML и вставить её в редактор. Чтобы переключиться в режим HTML, нажмите <>.

    2. Нажмите кнопку Завершить.

Создайте пул

Пул — это набор оплачиваемых заданий, которые одновременно выдаются исполнителям.

  1. Откройте страницу проекта по поиску информации в интернете.

  2. Нажмите кнопку Добавить пул.

  3. Укажите Название пула.

  4. В разделе Цена за страницу заданий в поле Цена в долларах США укажите цену. Например, 0.01.

    Что такое страница заданий?

    На одной странице может отображаться одно или несколько заданий. Если задания простые, то можно добавлять 10–20 заданий на одну страницу. Не рекомендуем создавать длинные страницы, поскольку это снизит скорость загрузки данных у исполнителя.

    Исполнитель получит оплату, только если выполнил все задания на странице.

    Количество заданий на странице вы определите при загрузке заданий.

    Подробнее о том, как установить справедливую цену, а также примеры стоимости различных типов задач.

  5. В разделе Исполнители отфильтруйте исполнителей.

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

    1. Нажмите Добавить фильтр.

    2. Найдите в списке блок Готовые наборы аудиторий и выберите набор фильтров Русскоязычные исполнители.

    3. Присвойте навык исполнителям, которые участвуют в проекте по поиску информации в интернете. В дальнейшем это позволит поручить проверку выполненных заданий только исполнителям без навыка — то есть тем, кто не выполнял задания этого проекта.

      Нажмите кнопку +Добавить навык и укажите название навыка, например Поиск информации.

  6. Правила контроля качества позволяют отсеивать невнимательных исполнителей.

    В разделе Контроль качества задайте Частоту показа капчи, например Среднюю.

    Добавьте следующие блоки контроля качества:

    1. Контрольные задания — отсеивает исполнителей, которые часто ошибаются в контрольных заданиях.

      1. Нажмите Добавить блок контроля качества.

      2. Найдите в списке блок Правила и выберите пункт Контрольные задания.

      3. Задайте правило для контрольного задания: если количество ответов на контрольные вопросы ≥ 3 и процент правильных ответов на контрольные вопросы < 60, то заблокировать исполнителя на проекте на 10 дней. В качестве причины укажите Контрольное задание.



        Это означает, что если исполнитель выполнил более трех контрольных заданий и дал неправильные ответы более чем в 60% из них, он будет заблокирован и не сможет выполнять задания на этом проекте в течение 10 дней.

    2. Быстрые ответы — отсеивает исполнителей, которые отвечают слишком быстро.

      1. В поле Сколько последних значений учитывать введите количество последних страниц заданий, выполненных исполнителем. Например, 10.
      2. В поле Минимальное время на страницу заданий укажите время в секундах. Например, 20.
      3. Задайте правило для быстрого ответа: если количество быстрых ответов ≥ 1, то заблокировать у меня на 10 дней. В поле Причина введите Быстрые ответы.



        Это означает, что если исполнитель выполнит хотя бы одну страницу заданий быстрее, чем за 20 секунд, он не сможет выполнять ваши задания 10 дней.

    3. Капча — предотвращает выполнение заданий роботами.

      1. В поле Сколько последних значений учитывать введите количество последних страниц заданий, выполненных исполнителем. Например, 10.
      2. Задайте правило для капчи: если количество ответов ≥ 5 и процент правильных ответов< 65, то заблокировать на проекте на 10 дней. В поле Причина введите Капча.



        Это означает, что если исполнитель верно вводит капчу менее чем в 65% случаев, он не сможет выполнять задания на проекте в течение 10 дней.

    4. Пропуск заданий — отсеивает исполнителей, которые пропускают несколько страниц заданий подряд.

      Задайте правило для пропущенных заданий: если пропущенных подряд страниц заданий ≥ 4, то приостановить в пуле на 10 дней. В поле Причина введите Пропуск заданий.



      Это означает, что если исполнитель пропустит 4 и более страниц заданий, он потеряет доступ к пулу на 10 дней.

    5. Установите перекрытие — количество исполнителей, которые должны выполнить задание. В разделе Перекрытие укажите значение поля Перекрытие. Для заданий этого типа, как правило, 3-5.

    Примечание.

    Вы можете скопировать настройки контроля качества из другого пула. Для этого в разделе Исполнители нажмите кнопку Скопировать настройки из....

  7. (опционально) В разделе Соотношение скорость/качество укажите, какому проценту пользователей с лучшим рейтингом будет доступен указанный пул. Подробнее об этом читайте в разделе Соотношение скорости и качества.

  8. Настройте Параметры пула.

    Укажите значение поля Время на страницу заданий в секундах. Времени должно быть достаточно для чтения инструкции, загрузки задания, поиска информации и ответа. Например, 1200 секунд.

  9. Нажмите кнопку Сохранить.

Загрузите TSV-файл с заданиями

Скачайте Пример загрузочного файла. Его можно найти на странице пула. В верхней части страницы слева есть ссылки на TSV-файл с обычными, контрольными и обучающими заданиями. На его основе подготовьте собственный файл с заданиями.

  1. На странице пула нажмите кнопку Загрузить. В открывшемся окне также можно скачать пример TSV-файла по ссылке Пример загрузочного файла.

  2. В открывшемся окне настройте параметры загрузки файла.

      1. Выберите Умное смешивание.

      2. В поле Основных заданий укажите 9.

      3. В поле Обучающих заданий укажите 0.

      4. В поле Контрольных заданий укажите 1.

      5. Нажмите кнопку Загрузить.

      6. В открывшемся окне выберите TSV-файл с заданиями для загрузки и нажмите кнопку Открыть.

      7. В открывшемся окне проверьте количество заданий и нажмите кнопку Добавить.

    1. Создайте контрольное задание:

      1. Нажмите кнопку Разметить.

        Примечание. Если вместо умного смешивания было выбрано другое, необходимо нажать кнопку Разметить. Если такой кнопки нет, удалите файл и загрузите заново.
      2. В открывшемся окне нажмите кнопку Создать контрольные.

      3. В открывшемся окне в разделе Создать контрольное задание слева отметьте пункт result.

      4. Выберите правильный ответ на вопрос.

      5. Нажмите кнопку Сохранить и перейти к следующему.

      6. Выйдите из режима разметки заданий.

      Примечание.

      В небольших пулах контрольные задания должны составлять около 10% от всех заданий. Включайте разные варианты правильных ответов в равных количествах. Посмотрите распределение ответов на странице Разметить задания на вкладке Контрольные.

    Нажмите кнопку , чтобы запустить пул.

Получите результаты

Когда исполнители выполнили ваши задания, получите результаты.

На странице пула нажмите кнопку Скачать результаты. В открывшемся окне нажмите кнопку Скачать результаты.

Поручите проверку исполнителям

Если в проекте по поиску информации в интернете вы использовали Отложенную приемку, отдайте результаты на проверку исполнителям в качестве задания. Подробнее об отложенной приемке.

  1. Создайте еще один проект с помощью Пустого шаблона. О том, какие настройки нужно задать для этого проекта, написано ниже.
  2. Создайте интерфейс задания, чтобы исполнитель увидел:
    • название организации;
    • электронную почту и номер телефона организации;
    • переключатель с вариантами ответов:
      • Электронная почта и номер телефона указаны верно.
      • Электронная почта указана неверно.
      • Номер телефона указан неверно.
      • Электронная почта и номер телефона указаны неверно.
  3. Добавьте пул и укажите в нем Перекрытие — 3.
  4. Чтобы это задание было доступно исполнителям, которые не искали информацию в сети на вашем проекте, установите фильтр.

    1. В разделе Исполнители нажмите Добавить фильтр.

    2. Найдите в списке блок Навыки и выберите навык Выбрать навык.

    3. В поле Выберите навык выберите Поиск информации.

    4. В поле ? укажите =. Поле Отсутствует оставьте пустым.

  5. Загрузите в пул задания и запустите его.
  6. Когда пул будет полностью выполнен, запустите агрегацию результатов.
  7. Примите задания по поиску информации, в которых нет ошибок. Остальные отклоните, указав причину. Как только вы отклоните задания, они будут отправлены на повторное выполнение.

Решение проблем

Как сделать так, чтобы для разных вопросов было различное количество вариантов ответов?
Используйте конкатенацию, например:
{{field type="checkbox" name=(concat "result." @index ) label=(concat "checkbox –
          " @index) size="L"}}
Как в JS сделать так, чтобы если чекбокс отмечен, то ссылку не запрашивать, а если ссылка вставлена, то галочка стоять не должна?
  1. Посмотрите как это реализовано в шаблоне «Найти информацию в интернете».
  2. Для решения второй задачи вы можете добавить ещё одну валидацию по аналогии с этой:
    if (solution.output_values.url && solution.output_values.check) {return {task_id:
    this.getTask().id,errors: {'url': {code: 'Вставьте ссылку или отметьте галочкой,что сайта нет'}}}}
Как в режиме предпросмотра включить загрузку аудиофайлов?

В режиме предпросмотра проверить загрузку файлов нельзя, но это можно сделать в песочнице, выполнив своё задание. Для этого нужно зарегистрироваться в сендбоксе в качестве исполнителя и добавить логин в доверенные на странице Пользователи. Подробнее можете прочитать в этой статье .

Исполнитель не может загрузить файл в задание?

Если никто из исполнителей не смог отправить задание, скорее всего проблема в валидации в JS. Проверьте её ещё раз.

Перенесите проект в сендбокс и попробуйте выполнить задание самостоятельно в песочнице.

Как снять выбор с радиокнопки?

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

Что делать, если атрибуты радио-кнопки в предпросмотре отображаются правильно, а после сохранения — нет?

Если после сохранения инструкции пропадают теги или атрибуты (например, checked="true"), значит они не поддерживаются. Полный список допустимых в инструкции тегов можно найти в руководстве.