InfSub
я изначально написал, что в js слаб, да, написал код в iim, но как в js его реализовать знаний не хватает. Egorushka1974 отозвался, и перевел код в js, InfSub подправил его в рабочее состояние. Но код сработал с ошибками. Egorushka1974 кинул мне ссылку на сайт по js. Там я и прочел о функциях if. Попробовал его прописать, js выдал ошибки. JS только на стадии моего изучения, и я обратился на форум с вопросом, в чем может быть проблема.karginaolga дала варианты, в чем может быть проблема, с вариантами решения. Она кидала варианты решения, я тестировал, и выдавал результат, параллельно читал и искал, как эти варианты можно адаптировать под мой код. Вот у нас и дискуссия образовалась. Возможно я и ошибаюсь, но форумы для того и создаются, что бы задавать вопросы если не знаешь, и получать ответы от знающих людей людей, если они хотят помочь тебе и поделиться. А вы InfSub за это накидали мне 1 зам + (1/3). Тогда пропишите в правилах, что в э
karginaolga
не чего не поменялось. после каждой "пусто", пропускается следующая группа после этого "пусто" и к предыдущим лайкам из группы +3 еще +3, и так по нарастающей.
21-11-2017 21:54:07
karginaolga
кажется я понял в чем дело. вот тут прописан цикл пробега по дому
for (let i=j=1, r; i<=25; j=++i*2-1) { iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n +'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT' ); r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop(); iimPlayCode( 'SET !EXTRACT "'+r+'"'+n +'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n +'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt' ); }
у меня так работает:
да, но: после проработки по else он перепрыгивает одну группу, а лайки прописывает из группы через +3й, в итоге одна пропущенная группа после "пусто", и лайки берет из группы которая следующая 3я по счету. чет каша получается. Но в целом заканчивает без ошибок.
21-11-2017 21:26:33
karginaolga
а лайки он берет от сюда
var q = window.document.querySelectorAll('div._glm')[i-1].textContent.match(/\d+/);
if (q != null) {
iimPlayCode('TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
+'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
);
r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
+'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
karginaolga
здесь?
if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i-1])
"Wow Реклама","Community","80K like this","https://www.facebook.com/wowreklama/?ref=br_rs"
…
"Реклама Экспо","5.0(3) · Company","73 like this","https://www.facebook.com/ReclamaExpo/?ref=br_rs"
"Sostav.ru: реклама и маркетинг в России","Business & Economy Website","61K like this","https://www.facebook.com/Sostav.ru/?ref=br_rs"
"СпортАкадемРеклама","5.0(4) · Event Planner","165 like this","https://www.facebook.com565774/?ref=br_rs"
"Parking Реклама","Organization","19 like this","https://www.facebook.com/ParkingReklama/?ref=br_rs"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","П
karginaolga
вот так сейчас сработало, но он доходя до сектора без лайков, начинает с else и все последующие циклы пишет как в условиях else, как будто не выходит из цикла else
[spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=25; j=++i*2-1){
if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i]) {
iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
+'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
);
r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
+'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
+'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
+'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
);
}
else {
iimPlayCode('SET !EXTRACT NULL'+n
+'ADD !EXTRACT "'+a+'"'+n
+'ADD !EXTRACT "'+a+'"'+n
+'ADD !EXTRACT "'+a+'"'+
karginaolga
И так не работает. Там если не поставил ни кто like, в DOM этого сектора вообще нет. Скрипт доходит до этого сектора и ошибка.
Вот загляните в дом
21-11-2017 19:53:50
karginaolga
только нужно залогинеться для начала. я могу скрин сделать и прислать.
InfSub
…и научитесь задавать конкретные вопросы
учту:D
через GetLastExtract не получаеться. два блока подряд с отсутствующим
<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>
karginaolga
попадает 80K like this. Где - 80K постоянно меняется, а like this неизменно. Это мне и нужно. Если нет like this, то и нужно пропускать этот блок. А точнее, если вообще нет этого
<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>
вот, кстати, рекомендую
Спасибо.
Пытаюсь выставить условия для цикла, но чет не хочет он работать. Битый час бьюсь уже. Суть в том, что бы перед выполнением кода, проверялось, если нет такого, то записываем "пусто".
Может подскажете, где и что делаю не так
[spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=10; j=++i*2-1){
iimPlayCode( 'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT')
q=iimGetLastExtract()
if (q == true) {
iimPlayCode( 'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+n
+'TAG POS='+i+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'
);
r=iimGetLastExtract().match(/(.*?)\s·\s\d+/).pop();
iimPlayCode( 'SET !EXTRACT "'+r+'"'+n
+'TAG POS='+i+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+n
+'TAG POS='+j+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+n
+'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt'
);
}
if (q == false) {
iimPlayCode(
InfSub
Еще потревожу. Столкнулся с тем, что не во всех блоках прописана нужная для извлечения информация. Например: есть только название, или название и url... И как только доходит до такого блока, js выдает ошибку и останавливается
if (iimGetLastExtract().match() == null) { iimPlayCode('SET !EXTRACT NULL'+n +'ADD !EXTRACT "'+a+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt' ); };
Весь код целиком [spoiler][code]const n='\n';
var a= "ПУСТО"
for (let i=j=1, r; i<=20; j=++i*2-1){
iimPlayCode( 'TAG
InfSub
Спасибо!!! Ты гуру:) Работает идеально.
Egorushka1974
Спасибо что подключился!!! Круто что можно обратиться за советом и помощью, и ты получишь и то и другое.
InfSub
а возможно ли в цикле прописывать еще один цикл?
как в данном цикле js прописать цикл
SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1") TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF
InfSub
Тут нельзя поставить условие w++ для всего цикла.
И дело не в том что переносит по пол строки, сам код, он как бы разбит на 2. Да, для разных переменных, но все же дважды прописан
iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt'); iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt')
Когда я писал код под iim, я так видел это:
берем в экстракт
InfSub, Egorushka1974
отсутствовали двойные кавычки при присвоении !extract значения
Начал создавать txt файл. Но работает не корректно:
этим кодом [spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
for(w=1; w==5 ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT " '+a+'"\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT " '+c+'"\nADD !EXTRACT '+d+'\nSAV
Полностью строку параметров цикла покажите
вот в таком виде код, нажимаю "воспроизвести", и не чего не происходит
[spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '*';//путь до папки куда сохраняем результаты.
for(w=1; w==10 ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimPlayCode('SET !EXTRACT '+a+'\nADD !EXTRACT '+b+'\nSAVEAS TYPE=EXTRACT FOLDER='+Path+' FILE=URL_URL.txt');
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT');
var c = iimGetExtract();
iimPlayCode('TAG POS='+w+' TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF');
var d = iimGetExtract();
iimPlayCode('SET !EXTRACT '+c+'\nADD !EXTRACT
А вы уверены что такой путь существует?
путь взял из "свойства папки", какой там указан, такой и указал в коде
Если у вас Windows, должен быть указан диск, если *nix, корректный путь, в никсах нет обратных слешей в пути
у меня mac os. я правильно вас понял
чет я совсем запутался, что не так то.
в таком виде, нажимаю "воспроизвести", и не чего не происходит
[spoiler][code]var a = 0, b = 0, c = 0, d = 0; //в заголовок скрипта, где объявляются переменные
var Path= '/Users/Admin/Desktop/iMacros/';//путь до папки куда сохраняем результаты.
for(w=1; w==10 ; w++){//поставьте ваше число
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT');
var a = iimGetExtract(); //вынимаем данные из _32mo
iimPlayCode('TAG POS='+w+' TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT');
var b = iimGetExtract().match(/(.*?)\s·\s\d+/).pop();//взял вашу регулярку, как работает не проверял, сайт неизвестен
iimP
Egorushka1974
Спасибо!
не знаю с какого сайта,
Работаю я с результатом поиска на фуйсбуке.
Вот например
"Wow Реклама", "Сообщества" , "Нравится: 80 тыс." , "https://www.facebook.com/wowreklama/?ref=br_rs"
взял вашу регулярку, как работает не проверял, сайт неизвестен
эта регулярка тут потому что, в каждом классе дважды указывается url страницы
Роде пробегает, видно подсвечивает, но файл с результатом не создается, не понимаю почему. Путь вроде указал верно. В чем может быть причина?
И у вас в условии стоял w=1000, он вообще не работал, я убрал его, и заработало, но не знаю где
Egorushka1974
Я пытался переписать код из iim в js и сразу в цикл ввести, но у меня не вышло, знаний пока не хватает, и отклика на форумах не нашел. Вот и работаю пока так, как умею.
К сожалению, пока не могу разобрать и адаптировать ваш скрипт под свой.
У мнея так
SET !REPLAYSPEED FAST SET !ERRORIGNORE YES TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()") SET !EXTRACT NULL ADD !EXTRACT {{!VAR1}} SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1") TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_A.txt
InfSub
Не знаете, а может ли Portable Firefox решить эту проблему? Устанавливать пока не рискую, не могу найти форума, отзывов или хоть какой-то дискуссии по Portable Firefox для MacOS.
Egorushka1974
У меня с самого первого цикла он ведет себя так. Да, и, мне нужно именно сохранять данные. Только вот не понимаю, почему скрипт подлагивает. Вот когда скролю, да, висит жестко, и не откликается, пока полностью скрипт не отработает. А тут по сути вся инфа подгруженна, нужно просто пробежаться по готовому результату, и скинуть нужное в фаил. В этом вопрос.
InfSub
подскажите а в чем может быть причина. Работаю двумя кодами, первым скорлю до конца результата в низ. Подсчитал что найдено например 3000 групп, запускаю второй код в цикле 3000, которым записываю названия и адреса в txt. И вот тут уже код работает как будто в режиме MEDIUM, хотя стоит FAST. Видно что немного лагает. Возможно это из-за большого кол-ва циклов, или большого объема подгруженной информации на странице?
FF - 47.0.1
iMacros - 8.9.7.
Mac OS
Подскажите, скорость воспроизведения iMacros кода зависит от загруженности оперативки. Вижу что FF подзагрузил оперативку, но не завис, откликается все норм. Открыта одна вкладка, но с большим объемом из поискового результата.
И вот запускаю iim на скорости FAST а он работает как на MEDIUM. Это норм?
Aikyaira
Благодарю, работает:)
подскажите разобраться, не могу понять где именно пропустил ";"
пишет
SyntaxError: missing ; before statement, line 6 (Error code: -991)
var n = '\n'; var macros = ''; macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_32mo EXTRACT=TXT'+ n; macros += 'TAG POS={{!LOOP}} TYPE=DIV ATTR=CLASS:_pac EXTRACT=TXT'+ n; macros += 'SET !VAR1 EVAL("'{{!EXTRACT}}'.match(/(.*?)\\s·\\s\\d+/).pop()")'+ n; macros += 'SET !EXTRACT NULL'+ n; macros += 'ADD !EXTRACT {{!VAR1}}'+ n; macros += 'SET !VAR1 EVAL("var i={{!LOOP}};i++*2-1")'+ n; macros += 'TAG POS={{!LOOP}} TYPE=A ATTR=HREF:*LIKERS* EXTRACT=TXT'+ n; macros += 'TAG POS={{!VAR1}} TYPE=A ATTR=DATA-TESTID:SERP_RESULT_LINK* EXTRACT=HREF'+ n; macros += 'SAVEAS TYPE=EXTRACT FOLDER=* FILE=test.txt'+ n; iimPlayCode(macros);