Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.
  • Форумы
  •  » iMacros
  •  » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

№103-05-2017 12:26:23

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 58.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)



iMacros for FireFox - общие вопросы, обсуждение возможностей (Часть 2)



Правила оформления сообщений в данном топике:

1a50e37cd460db106ba5ca4992038a53.jpg


  • Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [ spoiler][ noindex]http://адрес_сайта/название_страницы[ /noindex][ /spoiler]

  • Для размещения кода, используйте тег "Code" внутри тега "Spoiler" - [ spoiler][ code]ваш код[ /code][ /spoiler]
    или выложите на сайт «Pastebin».
  • При размещении объемных материалов, используйте тег "Spoiler" - [ spoiler]ваш текст[ /spoiler]
    или выложите на сайт «Pastebin».
  • Размещать изображения в открытом виде. Для размещения скриншотов и других изображений, используйте тег "Spoiler" - [ spoiler][ img]http://ссылка_на_изображение[ /img][ /spoiler]
    .


«Можно ответить на любой вопрос, если вопрос задан правильно.»
Платон

«Не каждый вопрос заслуживает ответа.»
Сайрус


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№60219-02-2018 21:54:26

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

подскажите как вывести захваченную группу, раньше вроде так работало

скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("var x=\"{{!EXTRACT}}\"; x=x.match(/лишний текст(начало нужного текста[\s\S]+конец нужного текста)лишний текст/g,\"$1\");")


а сейчас выводит все что подходит под match, а не только захваченную группу, через replace работает, но тогда весь лишний текст надо под регулярку подгонять

Отредактировано stanny (19-02-2018 21:57:12)

Отсутствует

 

№60320-02-2018 00:19:06

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 64.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

stanny, так работал replace, а не match


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№60420-02-2018 02:32:24

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

stanny, это вариант для replace, а не для match. Предлагается менять весь паттерн на кусок, заключённый в запоминающие скобки. Причём текст за пределами паттерна будет попадать в результат, а самое неприятное, если совпадений с шаблоном не будет, то в результат попадёт весь текст, т.к. replace ничего не заменит.
Гуглите как работать с запоминающими скобками. В массив результатов первым делом идёт весь паттерн без учёта скобок с индексом [0], далее то, что заключено в каждой запоминающей скобке с соответствующими индексами от [1] до [n] согласно последовательности применения этих скобок слева направо.

скрытый текст

Выделить код

Код:

var str = "через replace работает, но тогда весь лишний текст надо под регулярку подгонять";

    var parse = str.match(/работает, (но) тогда (весь) лишний текст/);

    alert(parse);//Результирующий массив => ['работает, но тогда весь лишний текст','но','весь']
    alert(parse[0]);//Паттерн без учёта скобок => 'работает, но тогда весь лишний текст'
    alert(parse[1]);//Первая запоминающая скобка => 'но'
    alert(parse[2]);//Вторая запоминающая скобка => 'весь'


Соответственно если так хочется задать границы поиска без их включения, то результат получаем так
скрытый текст

Выделить код

Код:

var str = "через replace работает, но тогда весь лишний текст надо под регулярку подгонять";
    var parse = str.match(/работает,([\s\S]*)лишний текст/);
    alert(parse[1]);//=> 'но тогда весь'


но регулярка естественно будет работать без флага полнотекстного поиска всех совпадений 'g'
скрытый текст

Выделить код

Код:

var regex = /начало границы поиска([\s\S]*)конец границы поиска/;

Отредактировано Squatter (20-02-2018 02:40:55)

Отсутствует

 

№60520-02-2018 02:40:14

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 64.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter пишет

но тогда весь лишний текст надо под регулярку подгонять

[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется
как уже сказал выше, скорее всего stanny просто перепутал функции


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№60620-02-2018 16:03:57

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

InfSub пишет

[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется

не всегда подходит, например "какойто текст текст который нужен " так [\s\S]*(текст[\s\S]+) в груп 1 будет  "текст который нужен" , а так (текст[\s\S]+) "текст текст который нужен " , т.е. с [\s\S]* будет брать с последнего совпадения, а без него с первого

https://regexr.com/

Отредактировано stanny (20-02-2018 16:08:47)

Отсутствует

 

№60720-02-2018 16:10:25

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 64.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

stanny
я не говорил о частностях
в той или иной ситуации рег выражение может в корне отличаться


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№60820-02-2018 16:30:03

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter пишет

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

ну так я это и хочу получить, но чисто в ймакросе
P/s : нашел решение

скрытый текст

Выделить код

Код:

Set !Var1 Eval("var exp = '{{!extract}}'.match(/(начало строки[\s\S]+)лишний текст/); exp[1];")


выводит только то что задано в захваченной группе

Отредактировано stanny (20-02-2018 17:32:32)

Отсутствует

 

№60920-02-2018 17:56:32

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

InfSub пишет

как уже сказал выше, скорее всего stanny просто перепутал функции

Ну будет он в replace обрезать лишний текст с по-ю набора [\s\S]*. Как я уже сказал, тогда в случае отсутствия совпадений с паттерном в результат попадёт весь текст, т.к. replace ничего не заменит. ИМХО сомнительное удовольствие, как и вся идея с реплейсом.

Уж лучше тогда циклом через exec собирать

скрытый текст

Выделить код

Код:

var str = "-#11111#-#22222#-#33333#-#44444#-";
var reg = /#([\s\S]+?)#/g;
var match, parse = '';
while ((match = reg.exec(str)) !== null) {
        parse += match[1] + "\r\n";
        alert(match[1]);
}
alert(parse);


Это просто для примера. Понятно, что для приведённой строки решается проще
скрытый текст

Выделить код

Код:

var str = "-#11111#-#22222#-#33333#-#44444#-";
alert(str.match(/[^-#]+/g));

stanny пишет

P/s : нашел решение

Это подходит только для первого совпадения без флага 'g', уже говорил.
Если хотите полнотекстовый поиск со сбором всех совпадений без включения границ поиска, то смотрите вариант выше с циклом и exec.

P.S. stanny, а вообще в 90% случаев достаточно использования querySelectorAll, чтобы не было необходимости громоздить экстракты и регулярки в EVAL. ;)

Отредактировано Squatter (20-02-2018 18:25:25)

Отсутствует

 

№61020-02-2018 19:40:44

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter
для глобал можно через задницу сделать :)

скрытый текст

Выделить код

Код:

SET !VAR1 EVAL("\"{{!extract}}\".match(/(начало строки[\s\S]+)лишний текст/g, \"$1\").replace(/лишний текст/g, \"\");")

Отсутствует

 

№61120-02-2018 20:36:32

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Если не глобальный поиск и нужно только первое совпадение, тогда смысл танцев с EVAL вообще непонятен. Ведь можно писать регулярки в SEARCH напрямую.

скрытый текст

Выделить код

Код:

URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=754277#p754277
SEARCH SOURCE=REGEXP:"глобал([\s\S]+?)через" EXTRACT="$1"
PROMPT {{!EXTRACT}}

Отсутствует

 

№61221-02-2018 00:06:40

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter пишет

Ведь можно писать регулярки в SEARCH напрямую.

блин, это что выходит я зря все время обрезанием занимался :lol:
а с пробелами как его подружить ?? вместо пробела нужно точку ставить чтобы ошибки не было

скрытый текст

Выделить код

Код:

SEARCH SOURCE=REGEXP:"для.глобал([\s\S]+?)через" EXTRACT="$1"

Отредактировано stanny (21-02-2018 00:20:07)

Отсутствует

 

№61321-02-2018 00:59:25

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

\s пробельный символ

скрытый текст

Выделить код

Код:

SEARCH SOURCE=REGEXP:"для\sглобал([\s\S]+?)через" EXTRACT="$1"


Гуглите про классы и спецсимволы
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Отсутствует

 

№61421-02-2018 16:34:45

stanny
Участник
 
Группа: Members
Зарегистрирован: 09-10-2017
Сообщений: 23
UA: Chrome 49.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter пишет

\s пробельный символ

знаю, но обычно оно и с обычным пробелом работает

Отсутствует

 

№61522-02-2018 09:11:56

genstrijen
Участник
 
Группа: Members
Зарегистрирован: 26-04-2017
Сообщений: 40
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Ребята, привет! Подскажите скрипт чтоб сохранять все картинки страницы сайта в файл? Например эта страница

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


как сделать чтоб скрипт сохранял не одну какую-то картинку, а сразу все какие есть в файл?

Отредактировано InfSub (24-02-2018 01:08:21)

Отсутствует

 

№61622-02-2018 11:06:53

googlenoob
Участник
 
Группа: Members
Зарегистрирован: 21-01-2017
Сообщений: 43
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Как понять в файл? Может в папку!

Отсутствует

 

№61722-02-2018 11:18:29

genstrijen
Участник
 
Группа: Members
Зарегистрирован: 26-04-2017
Сообщений: 40
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

googlenoob
да! точно. в папку! То есть чтоб все картинки в папку. Потом переходит на следующую страницу сайта и так же все картинки в папку, потом следующую страницу и так далее. То есть надо чтоб все картинки с сайта выкачал какие есть в папку. Ну зациклить, я зациклю, а вот вопрос в том как сделать чтоб все картинки со страницы в папку указанную скачивал? Подскажите такой скрипт.

Отредактировано genstrijen (22-02-2018 11:19:11)

Отсутствует

 

№61822-02-2018 12:26:16

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

genstrijen, стандартной командой SAVEITEM

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Отредактировано Squatter (22-02-2018 12:27:13)

Отсутствует

 

№61922-02-2018 16:25:08

genstrijen
Участник
 
Группа: Members
Зарегистрирован: 26-04-2017
Сообщений: 40
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Squatter
так этой командой делается скриншот! А зачем мне скриншот? Мне надо весь элемент целиком! То есть картинки, находящиеся на странице сайта целиком! а не в виде какого-то скриншота.

Отсутствует

 

№62022-02-2018 17:05:05

googlenoob
Участник
 
Группа: Members
Зарегистрирован: 21-01-2017
Сообщений: 43
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в for(a=1;a<=2521;a++).

скрытый текст

Выделить код

Код:

function parser()
{
    for(i=1;; i++)
    {
    iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg');
    //var a=iimGetLastExtract();
    if(iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg')<0) break;
    iimPlay("D:\\iMacros\\parsing-on\\parsing-jpg.iim");
    }
}

for(a=1;a<=2521;a++){
    parser(); 
 if(iimPlayCode('SET !TIMEOUT_PAGE 30\nSET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=A ATTR=TXT:'+a+'')<0) break;
}


Содержимое parsing-jpg.iim

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED MEDIUM
SET !TIMEOUT_PAGE 30
TAB T=1
'URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0
ONDOWNLOAD FOLDER=C:\CAPCHA\test-pars-jpg\ FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS={{!LOOP}} TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg CONTENT=EVENT:SAVEPICTUREAS


При тесте прошёл 3 стр и собрал все картинки что были.

Отсутствует

 

№62122-02-2018 17:33:46

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 123
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

genstrijen, читайте тут про разницу команд

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


SAVEITEM извлекает из кеша браузера, что само собой быстрее.

---UPD
googlenoob, касательно {{!NOW:yyyymmdd_hhnnss}} заметил, что сохранение маленьких картинок может происходить в десятые доли секунды, поэтому тут либо "fffff" дописывать к формату времени, если такое возможно(не проверял), либо генерить рандомное имя. В противном случае в цикле будет давать файлам одинаковое имя и соответственно перезаписывать их.

Вот проще вариант

скрытый текст

Выделить код

Код:

var nodelist = content.document.querySelectorAll('img');
for (i=1;i<=nodelist.length;i++) {
       iimPlay("CODE:ONDOWNLOAD FOLDER=C:\download\ FILE=00"+i+"-"+Math.floor(Math.random()*100000)+" WAIT=YES\nTAG POS="+i+" TYPE=IMG ATTR=SRC:* CONTENT=EVENT:SAVEITEM");
}


Будет скидывать все картинки со страницы без учёта расширения. А вообще лучше оставлять родные имена файлов FILE=* иначе будет копировать дубли. В идеале делать проверку совпадений с именами уже сохранённых файлов.

Отредактировано Squatter (22-02-2018 18:52:29)

Отсутствует

 

№62223-02-2018 16:28:49

vadimka0216
Участник
 
Группа: Members
Зарегистрирован: 23-02-2018
Сообщений: 5
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Не подскажите команду в командной строке, которая останавливает скрипт в браузере Mozilla?

Отсутствует

 

№62323-02-2018 17:34:41

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 64.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

vadimka0216
только завершение процесса самой мозиллы, иначе через консоль ни как не остановить


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№62423-02-2018 22:02:40

genstrijen
Участник
 
Группа: Members
Зарегистрирован: 26-04-2017
Сообщений: 40
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

googlenoob

googlenoob пишет

Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в for(a=1;a<=2521;a++).

скрытый текст

Выделить код

Код:

function parser()
{
    for(i=1;; i++)
    {
    iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg');
    //var a=iimGetLastExtract();
    if(iimPlayCode('TAG POS='+i+' TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg')<0) break;
    iimPlay("D:\\iMacros\\parsing-on\\parsing-jpg.iim");
    }
}

for(a=1;a<=2521;a++){
    parser(); 
 if(iimPlayCode('SET !TIMEOUT_PAGE 30\nSET !TIMEOUT_STEP 0\nTAG POS=1 TYPE=A ATTR=TXT:'+a+'')<0) break;
}


Содержимое parsing-jpg.iim

скрытый текст

Выделить код

Код:

SET !ERRORIGNORE YES
SET !REPLAYSPEED MEDIUM
SET !TIMEOUT_PAGE 30
TAB T=1
'URL GOTO=https://forum.onliner.by/viewtopic.php?t=919197&start=0
ONDOWNLOAD FOLDER=C:\CAPCHA\test-pars-jpg\ FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS={{!LOOP}} TYPE=IMG ATTR=SRC:http://content.onliner.by/forum/*/*/*/*/*.jpg CONTENT=EVENT:SAVEPICTUREAS


При тесте прошёл 3 стр и собрал все картинки что были.


что-то не получается у меня реализовать эти два скрипта совместно. Вот если использую parsing-jpg.iim просто, в смысле без .js , а только задаю количество циклов (например 300), то все картинки собирает сразу, как положено со всей страницы:
скрытый текст
Screenshot-37.jpg

а вот если использую написанный вами ява-скрипт и в нём как и положено указую свой путь кparsing-jpg.iim, то оно срабатывать-то срабатывает, да только скрипт parsing-jpg.iim собирает одну и ту же картинку со страницы несколько раз, потом ява-скрипт переходит на следующую страницу и там начинает собирать картинки, но опять же собирает одну и ту же картинку несколько раз и так далее. Что не так?

Отредактировано InfSub (23-02-2018 22:30:33)

Отсутствует

 

№62523-02-2018 22:32:37

InfSub
iMacroModer
 
Группа: Moderators
Откуда: DeepTown
Зарегистрирован: 13-05-2013
Сообщений: 3319
UA: Chrome 64.0
Веб-сайт

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

genstrijen
{{!LOOP}} не работает при запуске из js


Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox


на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!

Отсутствует

 

№62623-02-2018 22:56:50

genstrijen
Участник
 
Группа: Members
Зарегистрирован: 26-04-2017
Сообщений: 40
UA: Chrome 64.0

Re: iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

InfSub пишет

{{!LOOP}} не работает при запуске из js

вот и я склоняюсь к этой причине. Дак а как  тогда сделать чтоб все работало как надо? А то googlenoob пишет что тестировал 3 страницы и всё нормально, все картинки скачались... А оно оказывается {{!LOOP}} не работает при запуске из js. Так как у него тогда скачались три станицы картинок? :sick:

Отсутствует

 
  • Форумы
  •  » iMacros
  •  » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2)

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]