- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
Использование наборов действий для расшифровки email (аналог кода javascript)
- Специализированные наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Использование наборов действий для расшифровки email (аналог кода javascript) |
Данная инструкция демонстрирует возможность выполнения сложных вычислений в парсере, на примере декодирования адреса электронной почты.
Для примера, возьмём эту страницу сайта, где в исходном коде страницы (при обычной загрузке этой страницы парсером) email скрыт, и выводится кодом javascript (этот код автоматически отрабатывает при использовании браузера для просмотра страницы, но парсер по-умолчанию не использует браузер, потому, вместо адреса почты мы видим код javascript для его генерации)
Эта статья не является руководством по расшифровке email именно таким способом. Обычно, достаточно заменить действие «Загрузить исходный код страницы» на действие «Открыть страницу в Internet Explorer», — там скрипты отработают автоматически, и email сразу будет виден. Это намного проще, чем разбираться в работе скрипта, и делать вложенные наборы действий из множества команд. Потому, вопринимайте статью просто как описание возможностей наборов действий.
Итак, при загрузке страницы, по вышеприведённой ссылке, вместо email, мы видим тег script следующего содержания:
Тот же код, но в более читабельном виде:
eval("
var a="V@Zc8GRjdM+o9xgEO06nLuszQpekTJabHm3.PUhwtyvrAl2K_YFW-1Sf4BCi5N7XIDq";
var b=a.split("").sort().join("");
var c="qyW8dC1qxK1yY-Zrf1";
var d="";
for(var e=0;e<c.length;e++) d+=b.charAt(a.indexOf(c.charAt(e)));
document.getElementById("email").innerHTML="<a href=\\"mailto:"+d+"\\">"+d+"</a>"
")
Наша задача, — автоматизировать при помощи наборов действий этот алгоритм из javascript
Вкратце, что делает код:
- сортирует посимвольно строку из переменной А, получая строку В вида
+-.0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz - перебирает все символы строки из переменной С
- для каждого символа строки С, ищет позицию этого символа в строке А, и берет из строки В символ в той же позиции
- сцепляет все полученные символы в одну строку
Такой вот незамысловатый алгоритм мы можем реазировать в программе «Парсер сайтов» при помощи 2 наборов действий.
Первый набор действий (основной, с названием «Получить email»), выполнит пункты 1, 2 и 4 нашего алгоритма,
а для пункта 3 алгоритма мы будет вызывать второй (вспомогательный) набор действий с названием «Вычислить символ»
Содержимое основного набора действий «Получить email»:
Исходное значение |
---|
Часть HTML-кода веб-страницы (длиной 503 символа) |
Действие | Параметр | Значение | Результат |
---|---|---|---|
Создать новый список значений | Часть HTML-кода веб-страницы (длиной 503 символа) <без изменений> |
||
Взять блоки текста МЕЖДУ ... | Начало блока текста | var c=\" | Текст (длиной 18 символов) |
Конец блока текста | \" | ||
Номер результата | 1 | ||
Добавить значение в список значений | Разделитель элементов списка | | | Часть HTML-кода веб-страницы (длиной 503 символа) |
Также сохранить значение в переменную | c | ||
Взять блоки текста МЕЖДУ ... | Начало блока текста | var a=\" | Текст (длиной 67 символов) |
Конец блока текста | \" | ||
Номер результата | 1 | ||
Сохранить текущее значение в переменную | Название переменной | a | Текст (длиной 67 символов) <без изменений> |
Область видимости | parser | ||
Регулярные выражения (выборка) | Шаблон Regexp | \S | Массив из 67 значений: |
Тип результата | |||
Шаблон замены | |||
Учитывать регистр символов | нет | ||
Сортировка массива | Порядок сортировки | по возрастанию | Массив из 67 значений: |
Тип сортировки | текст | ||
Номер столбца, по которому сортировать | 1 | ||
Объединить (сцепить) элементы массива | Разделитель элементов массива | Текст (длиной 67 символов) | |
Сохранить текущее значение в переменную | Название переменной | b | Текст (длиной 67 символов) <без изменений> |
Область видимости | parser | ||
Считать значение переменной | Название переменной | c | Текст (длиной 18 символов) |
Область видимости | parser | ||
Значение по-умолчанию | |||
Количество символов | Символ | Число (длиной 2 символа) |
|
Создать массив чисел (для цикла) | Начальное значение | 1 | Массив из 18 значений: |
Конечное значение | |||
Шаг | 1 | ||
Делитель для конечного значения | |||
Выполнить набор действий | Название набора действий | Вычислить символ | Массив из 18 значений: |
Маска для проверки на соответствие | * | ||
Режим сравнения с маской | совпадает | ||
Использовать результат из набора действий | да | ||
Объединить (сцепить) элементы массива | Разделитель элементов массива | Текст (длиной 18 символов) |
Содержимое вспомогательного набора действий «Вычислить символ»:
(на примере вычисления третьего символа адреса электронной почты)
Исходное значение |
---|
Число (длиной 1 символ) |
Действие | Параметр | Значение | Результат |
---|---|---|---|
Сохранить текущее значение в переменную | Название переменной | e | Число (длиной 1 символ) <без изменений> |
Область видимости | parser | ||
Считать значение переменной | Название переменной | c | Текст (длиной 18 символов) |
Область видимости | parser | ||
Значение по-умолчанию | |||
Несколько слов/символов с начала/с конца строки | Что и где искать | Символы с начала строки | Текст (длиной 1 символ) |
С какого слова/символа начинать | %e% | ||
Количество слов/символов | 1 | ||
Действие | Взять найденное | ||
Сохранить текущее значение в переменную | Название переменной | char | Текст (длиной 1 символ) <без изменений> |
Область видимости | parser | ||
Считать значение переменной | Название переменной | a | Текст (длиной 67 символов) |
Область видимости | parser | ||
Значение по-умолчанию | |||
Регулярные выражения (выборка) | Шаблон Regexp | (.*)%char% | Текст (длиной 52 символа) |
Тип результата | 0 | ||
Шаблон замены | |||
Учитывать регистр символов | да | ||
Количество символов | Символ | Число (длиной 2 символа) |
|
Сохранить текущее значение в переменную | Название переменной | pos2 | Число (длиной 2 символа) <без изменений> |
Область видимости | parser | ||
Считать значение переменной | Название переменной | b | Текст (длиной 67 символов) |
Область видимости | parser | ||
Значение по-умолчанию | |||
Несколько слов/символов с начала/с конца строки | Что и где искать | Символы с начала строки | Текст (длиной 1 символ) |
С какого слова/символа начинать | %pos2% | ||
Количество слов/символов | 1 | ||
Действие | Взять найденное |
Пример вызова набора действий из вывода на лист столбца «Электронная почта»:
Действие | Параметр | Значение | Результат |
---|---|---|---|
Взять блоки текста МЕЖДУ ... | Начало блока текста | >Электронная почта< | Часть HTML-кода веб-страницы (длиной 599 символов) |
Конец блока текста | </tr> | ||
Номер результата | 1 | ||
HTML: Поиск тегов | Тип элемента | script | Часть HTML-кода веб-страницы (длиной 503 символа) |
Название проверяемого атрибута | |||
Значение проверяемого атрибута | |||
Тип результата / извлекаемый атрибут | outerHTML | ||
Выполнить набор действий | Название набора действий | Получить email | Текст (длиной 18 символов) |
Маска для проверки на соответствие | * | ||
Режим сравнения с маской | совпадает | ||
Использовать результат из набора действий | да |
- Добавить комментарий
- 2223 просмотра