iMacros: URL GOTO = null, пропустить?
У меня есть длинная последовательность кода, которая посещает веб-сайт, входит в систему, публикует содержимое из .csv и сохраняет информацию, выходит из системы и посещает следующий веб-сайт. Это все жестко запрограммированных .
Какой самый простой способ пропустить части кода? У меня 60 сайтов. Пример:
Прямо сейчас , я не хочу, чтобы макрос посещал сайт 5, 6, 7, 9, 10, 22, 26, 35, 40, 45, 50, 59.
Через час , я не хочу, чтобы макрос посещал сайт 4, 5, 9, 10, 19, 30, 31, 49 и 50.
Пример того, как выглядит мой код:
' Первый сайт ВКЛАДКА Т=1 УСТАНОВИТЬ !ИСТОЧНИК ДАННЫХ test.csv УСТАНОВИТЬ !DATASOURCE_COLUMNS 2 УСТАНОВИТЬ !ЦИКЛ 2 УСТАНОВИТЬ !DATASOURCE_LINE {{!LOOP}} УСТАНОВИТЬ !ОШИБКА ДА УСТАНОВИТЬ !TIMEOUT_PAGE 2 URL-адрес GOTO=http://liu.com TAG POS=1 TYPE=INPUT:TEXT FORM=ID:mortalSubmit ATTR=NAME:title CONTENT={{!COL1}} TAG POS=1 TYPE=TEXTAREA FORM=ID:mortalSubmit ATTR=ID:post CONTENT={{!COL2}} TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:mortalSubmit ATTR=ID:submit ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!URLCURRENT}} ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!COL1}} ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!COL2}} TAG POS=1 TYPE=DIV ATTR=CLASS:успешно EXTRACT=TXT TAG POS=1 TYPE=DIV ATTR=CLASS:error EXTRACT=TXT СОХРАНИТЬ КАК ТИП=ИЗВЛЕКАТЬ ПАПКУ=* ФАЙЛ=report.csv TAG POS=2 TYPE=A ATTR=TXT:Выход из системы ПОДОЖДИТЕ СЕКУНД = 3 ' Второй веб-сайт ВКЛАДКА Т=1 УСТАНОВИТЬ !ИСТОЧНИК ДАННЫХ test.csv УСТАНОВИТЬ !DATASOURCE_COLUMNS 2 УСТАНОВИТЬ !ЦИКЛ 3 УСТАНОВИТЬ !DATASOURCE_LINE {{!LOOP}} УСТАНОВИТЬ !ОШИБКА ДА УСТАНОВИТЬ !TIMEOUT_PAGE 2 URL-адрес GOTO=http://kang.com/admin TAG POS=1 TYPE=A ATTR=TXT:Добавить новый TAG POS=1 TYPE=INPUT:TEXT FORM=ID:combatSubmit ATTR=NAME:title CONTENT={{!COL1}} TAG POS=1 TYPE=TEXTAREA FORM=ID:combatSubmit ATTR=ID:post CONTENT={{!COL2}} TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:combatSubmit ATTR=ID:submit ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!URLCURRENT}} ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!COL1}} ДОБАВИТЬ !ИЗВЛЕКАТЬ {{!COL2}} TAG POS=1 TYPE=DIV ATTR=CLASS:updated EXTRACT=TXT СОХРАНИТЬ КАК ТИП=ИЗВЛЕКАТЬ ПАПКУ=* ФАЙЛ=report.csv TAG POS=2 TYPE=A ATTR=TXT:Выход ПОДОЖДИТЕ СЕКУНД = 3
Это отлично работает для меня.
Итак, как в приведенном выше примере сделать так, чтобы код пропускал первый веб-сайт и сразу переходил ко второму веб-сайту? Я знаю, что могу сделать первые части кода комментариями и изменить SET!LOOP с 3 на 2. Это работает, но я не могу сделать это с 60 веб-сайтами.
Я подумал…
У меня есть отдельный .csv с информацией об URL:
URL, Имя http://liu.com,LIU.COM http://kang/admin.com,KANG.COM
А в коде:
УСТАНОВИТЬ !ИСТОЧНИК ДАННЫХ urls.csv ' Первый веб-сайт УСТАНОВИТЬ !ЦИКЛ 2 URL-адрес GOTO={{!COL1}} ' Второй веб-сайт УСТАНОВИТЬ !ЦИКЛ 3 URL-адрес GOTO={{!COL1}}
И как-нибудь сделать IF col1 = null GOTO COMMAND LINE x, что ли! Или просто наберите dasjdkaskasdasasdasg.com в col1 и дайте ему пройти, хотя это будет пустой тратой времени. Существует ли лучшее решение?
SET !LOOP также проблема. Можно ли сделать первый !SETLOOP 2 и все последующие !SETLOOP предыдущим+1
С наилучшими пожеланиями,
Лю Канг
ОБНОВЛЕНО: Невозможно достичь этого только с помощью IIM. Долго пытался с EVAL поднять SETLOOP, но это очень ограничено. Смотрите обновленный комментарий.
Резюме из комментария:
- Разделил код на один . iim-файл для каждого веб-сайта
- Все .iim-файлы имеют уникальный SETLOOP и импортируют данные из одного и того же .CSV
- Файл Javascript выполняет каждый файл .iim
- Работа над решением, позволяющим заставить Javascript выполнять файлы .iim только тогда, когда COL3 в .CSV содержит данные, теперь проблема заключается в том, чтобы заставить Javascript импортировать данные из .CSV, когда jQuery не разрешен при использовании iMacros.
Метод Page.goto() | Puppeteer
Версия: 19.3.0Подпись:
class Page {
goto(
url: string,
options?: WaitForOptions & {
referer?: string;
}
): Promise;
}
Параметр | Тип | Описание | |
---|---|---|---|
URL | строка | URL для перехода к странице | URL-адрес должен включать схему, например. https:// |
options | WaitForOptions & { referer?: string; } | (необязательно) Параметр навигации |
Возвращает:
Promise
Обещание, которое разрешается в ответ основного ресурса.
Аргумент options
может иметь следующие свойства:
тайм-аут
: Максимальное время навигации в миллисекундах, по умолчанию 30 секунд, введите 0, чтобы отключить тайм-аут. Значение по умолчанию можно изменить с помощью методов Page.setDefaultNavigationTimeout() или Page.setDefaultTimeout().waitUntil
: Когда считать навигацию успешной, по умолчаниюзагрузить
. Учитывая массив строк событий, навигация считается успешной после запуска всех событий. Событий может быть:
—load
: считается, что навигация завершена, когда запускается событие загрузки.
—domcontentloaded
: считается, что навигация завершена при запуске события DOMContentLoaded.networkidle0
: считать навигацию завершенной, когда имеется не более 0 сетевых подключений в течение как минимум500
мс.
—networkidle2
: считать навигацию завершенной, когда имеется не более 2 сетевых подключений в течение как минимум500
мс.referer
: Значение заголовка Referer. Если он предоставлен, он будет иметь преимущество перед значением заголовка реферера, установленным page.setExtraHTTPHeaders().
page.goto
выдаст ошибку, если:
- есть ошибка SSL (например, в случае самозаверяющих сертификатов). — целевой URL-адрес недействителен. — превышено время ожидания во время навигации. — удаленный сервер не отвечает или недоступен. — не удалось загрузить основной ресурс.
не будет выдавать ошибку, когда удаленный сервер возвращает какой-либо действительный код состояния HTTP, включая 404 «Не найдено» и 500 «Внутренняя ошибка сервера». Код состояния для таких ответов можно получить, вызвав response.status().
ПРИМЕЧАНИЕ. page.goto
либо выдает ошибку, либо возвращает ответ основного ресурса.