Правила оформления сообщений в данном топике:
Адрес сайта и страницы, на которой возникла проблема, размещается в тегах [ 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)!
Отсутствует
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' ); };
Весь код целиком
const n='\n'; var a= "ПУСТО" for (let i=j=1, r; i<=20; 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' ); 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' ); }; };
Отредактировано Alladin (21-11-2017 15:33:26)
Отсутствует
Чой-то догнать не могу. Подскажите плиз.
X = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1"); x=new X(); HEADERS=x.getResponseHeader('set-cookie')
token=Y2NKYkEwSVFPdWZEOUphUGM0aUhnQXZPTmJ2bnF1ZXB1YTQ0VjZSK1d1R1Y0cjkraEphZFA2OEsvclBBYkdJQQ%3D%3D; expires=Fri, 16-Nov-2018 09:41:46 GMT; Max-Age=31104000; path=/
InfSub
Отсутствует
Спасибо что подключился!!!
Да, пожалуйста.
вот, кстати, рекомендую, сам читаю
3 замечание, бан на неделю
InfSub
Отсутствует
вот, кстати, рекомендую
Спасибо.
Пытаюсь выставить условия для цикла, но чет не хочет он работать. Битый час бьюсь уже. Суть в том, что бы перед выполнением кода, проверялось, если нет такого, то записываем "пусто".
Может подскажете, где и что делаю не так
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('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' ); } };
Отредактировано Alladin (21-11-2017 18:04:25)
Отсутствует
Alladin
Отредактировано karginaolga (21-11-2017 18:20:14)
Отсутствует
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>
Отредактировано Alladin (21-11-2017 19:04:30)
Отсутствует
Alladin
if (iimGetLastExtract().indexOf("like this")>0) { //*********** } else { //*********** }
Отсутствует
и научитесь задавать конкретные вопросы
учту
через GetLastExtract не получаеться. два блока подряд с отсутствующим
<a style="outline: 1px solid blue;" href="/search/302615623128218/likers?ref=snippets">80K like this</a>
Отредактировано Alladin (21-11-2017 19:31:16)
Отсутствует
попробуйте в кавычках оставить только like
как это не откуда, а так:
var q = window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i].outerHTML; if (q.indexOf("like")>0) { //*********** } else { //*********** }
Отсутствует
karginaolga
И так не работает. Там если не поставил ни кто like, в DOM этого сектора вообще нет. Скрипт доходит до этого сектора и ошибка.
Вот загляните в дом
Добавлено 21-11-2017 19:53:50
karginaolga
только нужно залогинеться для начала. я могу скрин сделать и прислать.
InfSub
Отредактировано Alladin (21-11-2017 19:53:50)
Отсутствует
Alladin
if (window.document.querySelectorAll('a[style="outline: 1px solid blue;"][href^="/search/"]')[i]) { //если есть } else { //если нету }
var q = window.document.querySelectorAll('div[class="_glm"]')[0].textContent; alert(q);
Отредактировано karginaolga (21-11-2017 20:07:10)
Отсутствует
karginaolga
вот так сейчас сработало, но он доходя до сектора без лайков, начинает с else и все последующие циклы пишет как в условиях else, как будто не выходит из цикла else
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+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt' ); } };
у меня вообще нету, вот что есть:
а вот что у меня
Отредактировано Alladin (21-11-2017 20:19:19)
Отсутствует
вот здесь с нуля идет отсчет [i]
поставьте [i-1]
Отсутствует
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"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
"ПУСТО","ПУСТО","ПУСТО","ПУСТО"
Добавлено 21-11-2017 20:33:08
karginaolga
а так
var q = window.document.querySelectorAll('div[class="_pac"]')[i].outerHTML; if (q.indexOf("like")>0) {
Отредактировано Alladin (21-11-2017 20:33:08)
Отсутствует
Alladin
у меня так работает:
var q = window.document.querySelectorAll('div._glm')[i-1].textContent.match(/\d+/); if (q != null) { alert('ok'); } else { alert('no'); }
Отсутствует
у меня так работает:
да, но: после проработки по else он перепрыгивает одну группу, а лайки прописывает из группы через +3й, в итоге одна пропущенная группа после "пусто", и лайки берет из группы которая следующая 3я по счету. чет каша получается. Но в целом заканчивает без ошибок.
Добавлено 21-11-2017 21:26:33
karginaolga
а лайки он берет от сюда
const n='\n'; var a= "ПУСТО" for (let i=j=1, r; i<=25; j=++i*2-1){ 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 +'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+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt' ); } };
Отредактировано Alladin (21-11-2017 21:39:39)
Отсутствует
Alladin
const n='\n'; var a = "ПУСТО", z = 0; for (let i=j=1, r; i<=25; j=++i*2-1) { var q = window.document.querySelectorAll('div._glm')[z].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 +'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+'"'+n +'ADD !EXTRACT "'+a+'"'+n +'SAVEAS TYPE=EXTRACT FOLDER=* FILE=URL_AAA.txt' ); } z++; };
Отсутствует
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' ); }
Добавлено 21-11-2017 22:03:09
karginaolga
Хотя я сейчас прокрутил в цикле 20, проблема в то что пропускает одну группу после else, и проблема в лайках, они записываются из группы +3 +2. А название и url все совпадает.
Отредактировано Alladin (21-11-2017 22:03:09)
Отсутствует
цикл ломается, вот и получается кто в лес кто по дрова
изначально неправильно сформулирована схема работы скрипта
вы продумали и оттестировали работу скрипта в идеальных (лабораторных) условиях и попытались выпустить его "на свободу", где условия, заложенные вами, не истинны и не соответствуют эталонным
теперь вы пытаетесь прикрутить грабли к придуманному механизму, вместо того чтобы осознать совершенные ошибки и создать механизм, удовлетворяющий реальным условиям
можно внедрить десяток проверок и ветвлений, в зависимости от наличия и/или отсутствия тех или иных данных, но зачем? чтобы создать громоздкого монстра, код которого, с каждым разом, будет все сложнее и сложнее править и допиливать?
откройте основы для любого языка программирования, практически первое, что изучается - построение логических схем действия программы, составьте для себя схему, нарисуйте на бумаге, уже на этапе построения у вас возникнут мысли в ее нелогичности и желание упростить, потом критически присмотритесь и подумайте, а все ли эти ветвления нужны или может можно сделать в разы проще и если да, то как...
форум существует, в первую очередь для того, чтобы помочь, если вы не можете найти то или иное решение, не знаете чего либо, но не для того, чтобы писать весь код за вас, для этого есть отдельный топик для заказа скриптов
хотите разобраться - пишите, задавайте вопросы, но не надо тут устраивать конкурс из серии "давайте ка все вместе напишем для меня скрипт", потому что сейчас, данный вопрос превратился в некое подобие поговорки:
Тетенька, дайте попить, а то так есть хочется, аж переночевать негде
надеюсь не надо объяснять почему? или все же стоит напомнить изначальный вопрос о том, что: iim-код начал тормозить и что можно с этим сделать, а перерос в вопросы кривого экспорта данных, которые вы даже на iim-скриптах не тестировали
включайте голову, читайте, как работает js, повторюсь, если вы думаете, пробуете и не получается - это одно, если вы бездумно просите помощи - это совсем другое
пока что, во всем диалоге выше, я практически не вижу, каких-либо действий с вашей стороны, которые позволили бы предположить, что вы что-то самостоятельно попробовали и почитали, поискали ответы в интернете
я не считаю, внедренный вами if - мыслительным процессом, ибо вы получив ошибку на уровне поиска регулярным выражением - внедряете проверку ниже этого самого выражения, при том проверку пустого места вместо результата работы регулярки:
что вы тут пытаете найти пустым .match() ? где регулярное выражение, результат которого вы сравниваете с null?
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
InfSub
я изначально написал, что в js слаб, да, написал код в iim, но как в js его реализовать знаний не хватает. Egorushka1974 отозвался, и перевел код в js, InfSub подправил его в рабочее состояние. Но код сработал с ошибками. Egorushka1974 кинул мне ссылку на сайт по js. Там я и прочел о функциях if. Попробовал его прописать, js выдал ошибки. JS только на стадии моего изучения, и я обратился на форум с вопросом, в чем может быть проблема.karginaolga дала варианты, в чем может быть проблема, с вариантами решения. Она кидала варианты решения, я тестировал, и выдавал результат, параллельно читал и искал, как эти варианты можно адаптировать под мой код. Вот у нас и дискуссия образовалась. Возможно я и ошибаюсь, но форумы для того и создаются, что бы задавать вопросы если не знаешь, и получать ответы от знающих людей людей, если они хотят помочь тебе и поделиться. А вы InfSub за это накидали мне 1 зам + (1/3). Тогда пропишите в правилах, что в эту тему, можно обращаться лишь тогда, когда как минимум не на стадии изучения, то бишь для полупрофессионалов или профессионалов. И тогда, думаю, такие глупые вопросы как мои, не будет тут фигурировать.
InfSub Спасибо что нашли вчера время, и подкорректировали код в рабочее состояние. И нашли сегодня время, что бы написать такой талмуд пожеланий и умозаключений. Я учту.
Egorushka1974 Спасибо что откликнулся (еще раз).
karginaolga Спасибо что откликнулась.
Отсутствует
А вы InfSub за это накидали мне 1 зам + (1/3).
читайте внимательно за что у вас замечания, ни одного по поводу того, что вы сейчас пишите, но все связанные с оформлением постов:
Тогда пропишите в правилах, что в эту тему, можно обращаться лишь тогда
в правилах прописано, конкретно, вопросы по js уровня a+b считаются флудом и не потому что a+b это для профессионалов, а потому что большинству лень читать и изучать js (изучите основы, больше половины возникших выше у вас вопросов - связано с незнанием js)
1.5 Создавать темы или сообщения, не имеющие прямого отношения к данной теме, в том числе, по JavaScript. JS - обсуждается, только в связке JS + iMacros for Firefox. Для ответов на вопросы, из серии: как сложить a+b в js и аналогичных - есть Google. Подобные сообщения могут быть расценены как флуд.
речь не о том что вы тестировали или нет, речь о том, что я не вижу ваших собственных попыток решить проблему, только результаты работы чужого кода
либо вы прикладываете собственные усилия для реализации кода и задаете вопросы по делу, либо идете в личку с кем-то из участников форума или на иные форумы где менее придирчивы к тому что происходит на форуме
с вами готовы поделиться знаниями, но не нужно при этом сидеть и ждать готового решения, ни приложив ни грамма усилий (цинично?! возможно, но: "без труда, не вытянешь и рыбку из пруда", хотите научиться, учитесь, поможем, но учиться а не эксплуатировать чужие знания)
Добавлено 22-11-2017 02:38:44
тогда, думаю, такие глупые вопросы как мои, не будет тут фигурировать.
проблема не в уровне вопросов, а в том, что получив готовое решение - вы ни когда не научитесь думать собственной головой, не научитесь искать ответы самостоятельно
я могу вам написать код за 10 минут, могу изложить его суть, не реализовывая в коде, но что это даст лично вам? ни чего
потому что вы ни грамма не поймете в сути решения проблемы и завтра придете с аналогичным вопросом
изучите основы, поймите как работают циклы и ветвления, дабы не делать банальных ошибок и понимать, как работает тот или иной оператор или по вашему форум должен заменить вам учебник?
Отредактировано InfSub (22-11-2017 02:38:44)
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
здравствуйте. как регуляркой из значения, полученого в iimGetLastExtract , выбросить первую цифру, оставит только две последние?
iimPlayCode('TAG POS=1 TYPE=A ATTR=CLASS:data EXTRACT=HTM'); data=iimGetLastExtract().replace(/\D+/g,"").match(/\d{3}/).pop(); alert(data); // выдаёт 123, надо только 23.
Отсутствует
Flanker
\d
Цифра, символ от 0 до 9.
\D
Не-цифра, то есть любой символ кроме \d, например буква.
Отсутствует
Flanker
iimPlayCode('TAG POS=1 TYPE=A ATTR=CLASS:data EXTRACT=HTM'); data=iimGetLastExtract().replace(/\D+/g,"").match(/\d(\d{2})/).pop(); alert(data);
Правила форума iMacros for Firefox
Мини FAQ по iMacros for Firefox
на почту, только с интересными предложениями по скриптам (iMacros/iMacros+JS)!
Отсутствует
Здравствуйте, у меня возникла такая проблема- макрос никак не хочет работать с веб сайтом телеграмма - то есть он его просто не видит, не видит какие действия я пытаюсь записать на нем, не знаете в чем может быть проблема?спасибо
Отсутствует