Доброго времени, уважаемые.
2 дня назад появилась надобность в скрипте, и начал разбираться в imacros. Но так как я зашел в тупик и не могу догнать в чем проблема, прошу помощи у вас.
Суть задачи:
Имеется два файла. order.txt, который содержит ссылки вида:
https://lk.********.org/order/120019 https://lk.********.org/order/120021 https://lk.********.org/order/120022 https://lk.********.org/order/120027 https://lk.********.org/order/120033 https://lk.********.org/order/120034 https://lk.********.org/order/120042 https://lk.********.org/order/120044 https://lk.********.org/order/120045
Для начала, я пытаюсь написать скрипт чтобы оно один раз его извлекало, а потом уже зациклить, но столкнулся с не понятной мне проблемой.
Мой скрипт выглядит следующим образом:
SET !DATASOURCE C:\iMacros\Datasources\order.txt SET !EXTRACT {{!COL1}} TAB OPEN TAB T=2 URL GOTO={{!COL1}} TAG POS=1 TYPE=SPAN ATTR=class:o-user-info EXTRACT=SPAN SAVEAS TYPE=EXTRACT FOLDER=C:\iMacros\Datasources\ FILE=111.txt TAB CLOSE
InfSub
Отсутствует
Если копировать весь SPAN, тогда нужно отбирать ссылку регулярным выражением. Проще, на мой взгляд, EXTRACT=HREF.
Насчет циклов: в iMacros есть loop - количество циклов, которое можно указать перед воспроизведением. Так же, можно воспользоваться циклом for() от JavaScript.
Отсутствует
Если копировать весь SPAN, тогда нужно отбирать ссылку регулярным выражением. Проще, на мой взгляд, EXTRACT=HREF. Насчет циклов: в iMacros есть loop - количество циклов, которое можно указать перед воспроизведением. Так же, можно воспользоваться циклом for() от JavaScript.
Спасибо за ответ.
Как раз когда оформлял пост, заметил свою ошибку. Я считываю весь <SPAN> но адрес то у меня находится в <A>.
А как их можно совместить, чтобы имя брало со спан, ставило разделитель любой, и добавляло эмеил из хреф?
Так же, не могу понять как убрать ссылку из первого файла, её так же извлекает во второй файл. Насколько я могу понимать, мне после 5-й строчки нужно как то очистить переменную EXTRACT?
Да, зацикливать я буду с помощью цикла for() от JavaScript.
Отсутствует
SET !EXTRACT {{!COL1}}
зачем? или ссылка на страницу должна быть в итоговом файле?
EXTRACT=SPAN
нет такого параметра у extract'a, читайте
А как их можно совместить, чтобы имя брало со спан, ставило разделитель любой, и добавляло эмеил из хреф?
iimPlayCode(` SET !DATASOURCE C:\iMacros\Datasources\order.txt TAB OPEN TAB T=2 URL GOTO={{!COL1}} TAG POS=1 TYPE=SPAN ATTR=class:o-user-info EXTRACT=HTM TAB CLOSE `); var str=iimGetExtract(); var rx=/:\s(.*?),\s<a[^>]+>(.*?)</i; str=str.match(rx); str.shift(); str=str.join('[EXTRACT]'); iimPlayCode(` SET !EXTRACT ${str} SAVEAS TYPE=EXTRACT FOLDER=C:\\iMacros\\Datasources\\ FILE=111.txt `);
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Я считываю весь <SPAN> но адрес то у меня находится в <A>.
window.document.getElementsByClassName('o-user-info')[здесь_указывать_элемент_массива_по_счету].getElementsByTagName('a')[0].getAttribute('href');
Отредактировано EverythingForYou (11-01-2017 16:10:00)
Отсутствует
EverythingForYou
На сайте нужно извлечь Имя и эмеил заказчика
так что предполагаю, что href (ссылка) тут совсем не к чему
Отредактировано InfSub (11-01-2017 16:15:48)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
так что предполагаю, что href (ссылка) тут совсем не к чему
Тогда, скорее всего, так:
var info = window.document.getElementsByClassName('o-user-info')[здесь_указывать_элемент_массива_по_счету].getElementsByTagName('a')[0].innerHTML;
Отсутствует
скорее всего, так
в span'e находится имя и другая инфа, так что имя все равно придется извлекать регуляркой и соответственно брать все содержимое span'a
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
EverythingForYou пишетскорее всего, так
в span'e находится имя и другая инфа, так что имя все равно придется извлекать регуляркой и соответственно брать все содержимое span'a
Точно! Не заметил имя. Думал, что оно закрашено вместе с email'ом в теге <a>.
Отсутствует
зачем? или ссылка на страницу должна быть в итоговом файле?
таким образом я беру первую ссылку из файла. В итоговом не должна. Разве не так это делается?
По поводу Вашего кода, спасибо, я практически разобрался как он работает, но при компиляции ошибку выдало:
TypeError: str is null, line 12 (Error code: -991)
Я весь Ваш код поместил в файл с расширением .js и запустил в imacros.
Подскажете в чем дело?
Отсутствует
Подскажете в чем дело?
Попробуйте поменять одиннадцатую строчку:
Отредактировано EverythingForYou (11-01-2017 17:36:24)
Отсутствует
EverythingForYou
это приведет к мусору (полному тексту из span) плюс искомый текст
inbev92
Добавлено 11-01-2017 18:21:31
варианта ошибки - 2:
- либо extract не сработал (т.е. на странице не найден объект)
- либо, регулярное выражение не совпало с текстом (т.к. писал его исходя из текста на скрине и мог чего-то не учесть)
Добавлено 11-01-2017 18:26:37
таким образом я беру первую ссылку из файла.
Отредактировано InfSub (11-01-2017 18:30:05)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
и покажите ее вывод, лучше текстом а не скрином
результат текстом не могу показать, ибо текста нету. Результат alert-а и ошибку приведу ниже скриншотом
UPD
вот пример с другой ссылки:
<span class="o-user-info">Заказчик: Ирина, <a href="/order/?search=alis_fox%40mail.ru"> alis_fox@mail.ru</a> (<b><font color="green">1</font> / 2</b>)</span>
<span class="o-user-info">Заказчик: Егоров Борис, <a href="/order/?search=248435395"> 248435395</a> (<b><font color="green">3</font> / 3</b>)</span>
Отредактировано inbev92 (11-01-2017 20:02:04)
Отсутствует
отключите alertfox, или вы с ним работаете?
проблема в нем,судя по ошибке
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
отключите alertfox, или вы с ним работаете?
Честно говоря, я пользуюсь хромом. Мозилла чистая, ничего кроме аймакрос не установлено. А что такое alertfox я даже и не знаю.
- либо extract не сработал (т.е. на странице не найден объект)
Мне почему-то кажется что проблема в этом, так как при выполнении скрипта, даже новая вкладка не открылась.
Я пробовал запускать кусочек скрипта:
SET !DATASOURCE C:\iMacros\Datasources\order.txt TAB OPEN TAB T=2 URL GOTO={{!COL1}} TAG POS=1 TYPE=SPAN ATTR=class:o-user-info EXTRACT=HTM TAB CLOSE SAVEAS TYPE=EXTRACT FOLDER=C:\\iMacros\\Datasources\\ FILE=111.txt
Отредактировано inbev92 (11-01-2017 21:02:50)
Отсутствует
inbev92
какая версия iMacros?
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
inbev92
установите 8.9.3 и отключите обновление imacros'a
ссылки на все версии есть в FAQ раздела iMacros
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
установите 8.9.3
Я не знаю, "то ли я тупой, то ли лыжи не едут". В упор 8.9.3 версии не вижу
Отсутствует
В общем, установил я версию 8.9.7
Немного подправил код, и вот, что у меня вышло:
SET !DATASOURCE C:\iMacros\Datasources\order.txt SET !DATASOURCE_LINE {{!LOOP}} ADD !EXTRACT {{!COL1}} TAB OPEN TAB T=2 URL GOTO={{!COL1}} SET !EXTRACT NULL TAG POS=1 TYPE=SPAN ATTR=class:o-user-info EXTRACT=TXT SAVEAS TYPE=EXTRACT FOLDER=C:\iMacros\Datasources\ FILE=111.txt TAB CLOSE
Формат вывода меня устроит, я в notepad++ приведу к виду, который мне нужен.
Выражаю ОГРОМНУЮ благодарность всем участникам переписки, в частности InfSub, что помогли мне разобраться и добиться результата.
P.S.
Пробовал зациклить через js, но в итоге у меня просто счетчик считает, и дальше команды не выполняются:
for (i=1;i<=8710;i++){ var macro; macro = "CODE:"; macro += "SET !DATASOURCE C:\iMacros\Datasources\order.txt" + "\n"; macro += "SET !DATASOURCE_LINE "+i+ "\n"; macro += "ADD !EXTRACT {{!COL1}}" + "\n"; macro += "TAB OPEN" + "\n"; macro += "TAB T=2" + "\n"; macro += "URL GOTO={{!COL1}}" + "\n"; macro += "SET !EXTRACT NULL" + "\n"; macro += "TAG POS=1 TYPE=SPAN ATTR=class:o-user-info EXTRACT=TXT" + "\n"; macro += "SAVEAS TYPE=EXTRACT FOLDER=C:\iMacros\Datasources\ FILE=111.txt" + "\n"; macro += "TAB CLOSE" + "\n"; iimPlay(macro) ; }
Отсутствует
macro += "ADD !EXTRACT {{!COL1}}" + "\n";
и
macro += "SET !EXTRACT NULL" + "\n";
удалите, говорил же, зачем это здесь?
код приведенный мной в начале обсуждения у вас не работает на 8.9.7?
в итоге у меня просто счетчик считает, и дальше команды не выполняются:
так сравните строку save as в js из моего поста и из вашего
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Я не знаю, "то ли я тупой, то ли лыжи не едут". В упор 8.9.3 версии не вижу
писал с телефона, опечатался, имелась ввиду действительно 8,9,7
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует