Правила оформления сообщений в данном топике:
Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [ 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)!
Отсутствует
подскажите как вывести захваченную группу, раньше вроде так работало
SET !VAR1 EVAL("var x=\"{{!EXTRACT}}\"; x=x.match(/лишний текст(начало нужного текста[\s\S]+конец нужного текста)лишний текст/g,\"$1\");")
Отредактировано stanny (19-02-2018 21:57:12)
Отсутствует
stanny, так работал replace, а не match
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
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]);//=> 'но тогда весь'
Отредактировано Squatter (20-02-2018 02:40:55)
Отсутствует
но тогда весь лишний текст надо под регулярку подгонять
[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется
как уже сказал выше, скорее всего stanny просто перепутал функции
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
[\s\S]* - "спасет вождя мирового пролетариата" (с) и ни чего подгонять не придется
не всегда подходит, например "какойто текст текст который нужен " так [\s\S]*(текст[\s\S]+) в груп 1 будет "текст который нужен" , а так (текст[\s\S]+) "текст текст который нужен " , т.е. с [\s\S]* будет брать с последнего совпадения, а без него с первого
https://regexr.com/
Отредактировано stanny (20-02-2018 16:08:47)
Отсутствует
stanny
я не говорил о частностях
в той или иной ситуации рег выражение может в корне отличаться
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Соответственно если так хочется задать границы поиска без их включения, то результат получаем так
ну так я это и хочу получить, но чисто в ймакросе
P/s : нашел решение
Set !Var1 Eval("var exp = '{{!extract}}'.match(/(начало строки[\s\S]+)лишний текст/); exp[1];")
Отредактировано stanny (20-02-2018 17:32:32)
Отсутствует
как уже сказал выше, скорее всего 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);
P/s : нашел решение
Это подходит только для первого совпадения без флага 'g', уже говорил.
Если хотите полнотекстовый поиск со сбором всех совпадений без включения границ поиска, то смотрите вариант выше с циклом и exec.
P.S. stanny, а вообще в 90% случаев достаточно использования querySelectorAll, чтобы не было необходимости громоздить экстракты и регулярки в EVAL.
Отредактировано Squatter (20-02-2018 18:25:25)
Отсутствует
Squatter
для глобал можно через задницу сделать
SET !VAR1 EVAL("\"{{!extract}}\".match(/(начало строки[\s\S]+)лишний текст/g, \"$1\").replace(/лишний текст/g, \"\");")
Отсутствует
Если не глобальный поиск и нужно только первое совпадение, тогда смысл танцев с EVAL вообще непонятен. Ведь можно писать регулярки в SEARCH напрямую.
URL GOTO=https://forum.mozilla-russia.org/viewtopic.php?pid=754277#p754277 SEARCH SOURCE=REGEXP:"глобал([\s\S]+?)через" EXTRACT="$1" PROMPT {{!EXTRACT}}
Отсутствует
Ведь можно писать регулярки в SEARCH напрямую.
блин, это что выходит я зря все время обрезанием занимался
а с пробелами как его подружить ?? вместо пробела нужно точку ставить чтобы ошибки не было
Отредактировано stanny (21-02-2018 00:20:07)
Отсутствует
\s пробельный символ
Отсутствует
Ребята, привет! Подскажите скрипт чтоб сохранять все картинки страницы сайта в файл? Например эта страница
Отредактировано InfSub (24-02-2018 01:08:21)
Отсутствует
Как понять в файл? Может в папку!
Отсутствует
googlenoob
да! точно. в папку! То есть чтоб все картинки в папку. Потом переходит на следующую страницу сайта и так же все картинки в папку, потом следующую страницу и так далее. То есть надо чтоб все картинки с сайта выкачал какие есть в папку. Ну зациклить, я зациклю, а вот вопрос в том как сделать чтоб все картинки со страницы в папку указанную скачивал? Подскажите такой скрипт.
Отредактировано genstrijen (22-02-2018 11:19:11)
Отсутствует
genstrijen, стандартной командой SAVEITEM
Отредактировано Squatter (22-02-2018 12:27:13)
Отсутствует
Squatter
так этой командой делается скриншот! А зачем мне скриншот? Мне надо весь элемент целиком! То есть картинки, находящиеся на странице сайта целиком! а не в виде какого-то скриншота.
Отсутствует
Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в 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; }
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
Отсутствует
genstrijen, читайте тут про разницу команд
---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"); }
Отредактировано Squatter (22-02-2018 18:52:29)
Отсутствует
Не подскажите команду в командной строке, которая останавливает скрипт в браузере Mozilla?
Отсутствует
vadimka0216
только завершение процесса самой мозиллы, иначе через консоль ни как не остановить
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Скрипт для вашего сайта. Может его подправят местные старожилы быстро собрал на коленках. Собирает картинки в постах и пройдет страницы заданные в 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 стр и собрал все картинки что были.
Отредактировано InfSub (23-02-2018 22:30:33)
Отсутствует
genstrijen
{{!LOOP}} не работает при запуске из js
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
{{!LOOP}} не работает при запуске из js
вот и я склоняюсь к этой причине. Дак а как тогда сделать чтоб все работало как надо? А то googlenoob пишет что тестировал 3 страницы и всё нормально, все картинки скачались... А оно оказывается {{!LOOP}} не работает при запуске из js. Так как у него тогда скачались три станицы картинок?
Отсутствует