Переменная iMacros !ERRORIGNORE
Если переменная !ERRORIGNORE установлена со значением YES, тогда iMacros будет игнорировать возникающие ошибки. Макрос продолжает выполняться, даже если одна или несколько команд не были выполнены. Принимаемые значения: YES | NO.
Совет: Эту переменную можно использовать для того, чтобы iMacros пропускал несуществующие элементы страницы (TAG), с ее помощью можно сократить время ожидания невидимого / несуществующего на странице TAG элемента , обработка которого записана в макросе. По умолчанию 6 секунд. Чтобы изменить время ожидания, используйте !TIMEOUT_STEP.
Синтаксис:
SET !ERRORIGNORE YES
Задается:
× Внутренняя переменная
✓ Командой SET
«Внутренняя переменная» означает, что сам iMacros устанавливает значение данной переменной во время выполнения макроса. SET означает, что пользователь может установить это значение с помощью команды SET при редактировании макроса.
Пример:
Использование переменной !ERRORIGNORE iMacros для пропуска ошибок в части кода:
SET !TIMEOUT_STEP 1 SET !ERRORIGNORE YES ‘Команды которые иногда не работают (элементы не найдены)
TAG… TAG… ‘Возвращаем значения по умолчанию
SET !ERRORIGNORE NO SET !TIMEOUT_STEP 6
Tells iMacros to ignore errors. The replay of macros continues even if one or more commands fail.
Value

YES|NO
Set By
[ ] Internal
[X] SET
Internal means that the iMacros program itself sets the value of the variable during program run. SET means that the user can set this value via the SET command inside a macro.
Tip: If you use this command to skip not-existing (only sometimes existing) web page elements (TAG), then it can be useful to reduce the default time iMacros waits for a missing TAG to appear (6 seconds). Use the !TIMEOUT_STEP paramter for this.
Note: SET !ERRORIGNORE YES does not yet ignore the EVAL command error in iMacros for Firefox 10 (as it is in iMacros Browser).
Examples
SET !TIMEOUT_STEP 1 SET !ERRORIGNORE YES 'Commands that fail sometimes (element missing) TAG... TAG... 'Restore defaults SET !ERRORIGNORE NO SET !TIMEOUT_STEP 6
- «OR» function for buttons?
- Use one of two links (depending on which one is there)
- Ignore the error and keep runing code
See Also
Error Handling, !TIMEOUT_STEP
I have 1000+ URLs that I want to scrape to retrieve the title value from the HTML. After trying different things, I ultimately used iMacros scripts, which I don’t know anything about. Nonetheless, I managed to make a script after reading guides.
My script is working perfectly but has a problem: When leeching URLs titles, if it encounters an HTTP error (e.g. dead link, forbidden page, etc), it crashes with an error message like this one:
Error -1350: Error loading page. Http status 403. Line 4: URL GOTO=http://url.com
Instead of crashing when the script encounters these errors, I would like it to simply skip the URL and continue running. How can I modify my script to do this? Here is my script:
VERSION BUILD=9002379
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=http://google.com/
ADD !EXTRACT {{!URLCURRENT}}
TAG POS=1 TYPE=TITLE ATTR=* EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=d:/ FILE=links.txt
SET !EXTRACT_TEST_POPUP NO
Output:
http://google.com/,Google
I would also like to replace the comma after the URL in the output with a semicolon.
Только для читателей Lifeexample возможно открыть интернет-магазин на Moguta.CMS со скидкой в 15%
Здравствуйте, уважаемые читатели блога LifeExample, хочу познакомить вас с одним удивительным инструментом веб мастера, хакера, и простого пользователя, встречайте: плагин iMacros для браузера Mozila Firefox.
iMacros позволяет записать любую последовательность действий человека на сайте в макрос.
Макрос — программный код хранящий порядок необходимых к автоматическому выполнению.
Запустив макрос, действия выполняться автоматически, включая все переходы по вкладкам, заполнение полей, нажатием на кнопок, переходами по ссылкам и др.
Так сложилось, что последнее время часть моего времени уходит на написание ботов и поиск уязвимостей на чужих сервисах, через которые этих ботов можно протолкнуть.
Я не пишу вредоносные программы, а лишь упрощаю жизнь себе и людям, с которыми работаю, в задачи моих роботов входит автоматическое размещение объявлений на всевозможных информативных досках рунета.
Начав заниматься написанием скриптов для автоматического размещения информации на чужом сайте, я выбрал путь с использованием возможностей библиотеки CURL на php, но вскоре столкнулся с рядом проблем, обход которых не представлялся возможным, пользуясь лишь серверным языком. Малейшее использование JavaScripta в системе авторизации сайта ставило бота в тупик.
Гуляя по просторам интернета, с целью найти решение для обхода защиты использующей Javascript, я нашел инструмент, с помощью которого можно сделать бота эмулирующего любое действие человека, и этим инструментом явился плагин iMacros для браузера Mozila Firefox.
iMacros, как сделать первый макрос
Самым первым действием нужно установить плагин, для этого скачиваем последнюю версию iMacros, устанавливаем, и наблюдаем появившуюся панель в левой части окна.
В появившемся разделе находятся кнопочки и вкладочки данного инструмента, я думаю, вы без труда догадаетесь, как им пользоваться самостоятельно, но всеже немного расскажу об этом.
Для записи наших действий перейдем во вкладку запись и нажмем на одноименную кнопку. После чего откроем сайт yandex.ru и введем любой поисковый запрос, например: «Бесплатная CMS для интернет магазина Moguta», нажмем кнопку найти. Завершим запись действий, нажав на кнопку стоп в панеле iMacros.
Полученные в ходе наших действия команды iMacros сохраняет в файл #Current.iim. Чтобы воспроизвести их дважды кликнем на макрос #Current.iim, после чего iMacros должен произвести ряд записанных команд:
1 |
VERSION BUILD=7601105 RECORDER=FX |
Вот таки легким способом можно автоматизировать любое рутинное действие офисного сотрудника. Возможности плагина iMacros безграничны, с его помощью можно считывать данные из файла на диске и передавать их на любой сайт через макрос, как это сделать я расскажу дальше.
Команды iMacros на русском языке
Целью данной статьи стоит описать команды iMacros на русском языке, т.к. в интернете информации очень мало. Из действительно полезных источников, рассказывающих об iMacros на русском, я встретил только форум Mozila.
Прочитав данный форум, я собрал список часто задаваемых вопросов и часто используемых команд iMacros.
Я думаю каждый, кто имеет цель написать хоть чуточку полезный макрос, первым делом задаст себе следующие вопросы:
Как запустить iMacros автоматически на Windows
Ответ: Создать файл с расширением *.bat открыть в блокноте и сохранить в него строку:
1 |
start firefox «C:Program FilesMozilla Firefoxfirefox.exe» http://run.imacros.net/?m=#Current.iim. |
После чего макрос будет выполняться при запуске созданного файла. Для полной автоматизации, можно прописать его в планировщик задач windows.
Как запустить iMacros автоматически на Unix
Ответ: без комментариев, линуксоводы поймут:
1 |
#!/usr/bin/python |
Как запустить iMacros из PHP
Ответ: используя класс COM:
1 |
<?php
|
Разобравшись с автозапуском, приходит понимание, что для макроса со сложной задачей, необходимо научиться использовать циклы. В iMacros циклы предусмотрены, но пользоваться ими слишком неудобно.
iMacros команда для задания цикла
Слева снизу iMacros’а есть надпись «Повторить макрос», под ней поле «Макс:», там нужно ввести количество итераций цикла.
Поскольку с такой реализацией циклов далеко не уедешь, нужно искать альтернативу, и альтернатива в iMacros действительно есть. Плагин iMacros для браузера Mozila Firefox, имеет потрясающую возможность использовать управляющий JavaScript файл, именно эта способность окончательно разбило мое сердце и влюбила меня в iMacros.
Как сделать управляющий js-файл
Управляющий JavaScript файл — это ни что иное как обычный скрит на JS, Пример управляющего файла из демонстрационных скриптов iMacrosa:
1 |
MyPosts = new Array(); iimDisplay(«Array/iimSet Demo»); for (i = 0; i < MyPosts.length; i++) { iimDisplay(«Script completed.»); |
Можно заметить несколько непривычных web-программисту функций, в данном скрипте, являющимися командами для iMacros:
- iimSet(«POSTID», MyPosts[i]); — передает в макрос переменную «POSTID», со значением MyPosts[i];
- iimPlay(«CODE:URL GOTO=http://forum.iopus.com/viewtopic.php?f=11&t={{postid}}n»); — приводит команду макроса в выполнение, кроме того данной командой можно запустить готовый макрос iimPlay(«JS/login»,60);
- iimGetLastError(); — Возвращает текст ошибки;
- iimDisplay(«Script completed.»); — Выводит сообщение в консоль iMacros;
Научившись использовать команды iMacros внутри JavaScript, можно приступать к реализации любого бота, но практически сразу встанет вопрос: «как передать данные из текстового файла в макрос?».
iMacros команда для чтения CSV файла
В iMacros встроен свой парсер CSV файлов, что явно прощает жизнь программистам. Чтобы прочитать содержимое CSV нужно выполнить следующий список команд:
1 |
CMDLINE !DATASOURCE SET !DATASOURCE C:users.csv |
По умолчанию, макрос считывает CSV в формате в котором разделителями являются просто запятые. Иногда может потребоваться использоват альтернативный разделитель например в виде точки с запятой. В этом случае нужно выполнить команду:
1 |
SET !DATASOURCE_DELIMITER ; |
Если внутри поля csv необходимо использовать значение содержащие в себе разделитель, то нужно взять его в двойные кавычки.
Приведенный выше кусок макроса выполнится столько раз, сколько указано в поле «МАКС».
Согласитесь это не очень удобно, если после цикла нужно выполнить другие действия, или же новый цикл.
Как организовать полноценный алгоритм на iMacros, с чтением из CSV я покажу на практическом примере, но чуть позже, а пока хочу представить вашему вниманию функцию по возврату значения переменной обратно в JavaScript.
Как получить данные обратно в JS
Функция iimGetLastExtract() позволяет получить переменные из макроса в javascript, но работает она при условии, что в самом макросе существует команда
отдающая какое либо значение:
1 |
ADD !EXTRACT {{VAR1}} |
В данном случае из макроса возвращается три переменные, каждая из которых будет доступна следующими вызовами в JS:
1 |
var var1 = iimGetLastExtract(1); |
Иногда требуется задать значение переменной используя javascript прямо в макросе, для этого предусмотренна команда EVAL:
1 |
SET !VAR1 EVAL(«Math.floor(Math.random()*5 + 1);») |
Этим кодом в переменную {{!VAR1}} попадает случайное число сгенерированное на JS командой EVAL. Кстати обратите внимание, тут мы использовали еще одну новую iMacros команду: WAIT, задающую время ожидания перед выполнением следующего действия.
Не исключителен случай, когда страница на одном из сервисов, для которого написан макрос, изменит свою структуру , и тогда при выполнении iMacros выкинет ошибку.
Чтобы iMacros игнорировал ошибки, нужно прописать команду:
Еще несколькими полезными командами в iMacros может явиться понижение скорости выполнения макроса:
И отключение картинок
1 |
FILTER TYPE=IMAGES STATUS=ON |
Ну вот и пришло время окунуться в практику, и написать несколько несложных управляющих JavaScript файлов:
Сохранить капчу сайта на локальный диск
Перед использованием надо создать папку c:imacros и обновить плагин imacros до последней версии. Без обновления могут вылетать ошибки.
1 |
URL GOTO=http://yoursite.ru |
Примечание: данным методом можно сохранять статичные картинки, для генерируемых автоматически, как в случае с капчей, нужно использовать событие SAVE_ELEMENT_SCREENSHOT введенное с версии 7.2.0.8. iMacros
Должно получиться так:
1 |
URL GOTO=http://yoursite.ru |
iMacros выполнение JS внутри макроса
1 |
SET !VAR1 EVAL(«var content=’текст’; content;») |
iMacros практические примеры
- Создадим макрос, получающий первый заголовок из выдачи yandex.ru по запросу «Moguta CMS.»:
- Теперь сделаем цикл и выведем список 10 заголовков:
- Усложним задачу, создадим CSV файл, в котором укажем три поисковых запроса, разделив из точкой с запятой. Вот так будет выглядеть CSV:
- Пример с передачей переменных, одного макроса в другой. Сначала берем макросом данные из CSV, затем передаем их в JS, и после обработки отдаем на растерзание всем макросам из списка.
Содержание исполняемого JS файла.
1 |
var macros; macros = «CODE:SET !EXTRACT_TEST_POPUP NO»+s_n; |
1 |
var macros; for (i=1; i<=10; i++) { |
1 |
imacros команды;imacros скрипты;imacros на русском; |
И напишем макрос который выведет список топовых заголовков, занимающих первую позицию, по этим запросам.
1 |
var macros; for (j = 1; j <= rows; j++) { |
Обратите внимание, что файл test.csv, должен лежать в директории C:UsersuserDocumentsiMacrosDatasources , или необходимо указать абсолютный путь до файла C:\test.csv
1 |
var macros; macros = «CODE:SET !EXTRACT_TEST_POPUP NO»+s_n; macros += «ADD !EXTRACT {{!COL1}}»+s_n; retcode = iimPlay(macros); i = iimPlay(«JS/test»,60); |
На этом я закончу данную большую статью в которой мы узнали о том какие команды iMacros востребованы чаще остальных и написали несколько примеров макросов с использованием управляющих JS файлов.
Надеюсь данная статья про iMacros на русском, будет полезным материалом для создания ваших макросов, желаю успехов, если дополнения или вопросы, пишите в комментах.
Читайте также похожие статьи:
Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.
Одна из самых важных команд в аймакрос, в 70% случаев решает проблемы с макросами у новичков.Разумеется это Команда игнорирования ошибок.
SET !ERRORIGNORE YES|NO
Команда принимает два возможных значения это YES и NO, соответственно либо при наличии ошибок они игнорируются либо нет и макрос останавливается.
- 20 апреля 2015
- Комментариев нет