Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: vas1liy1990 on July 15, 2017, 11:10:23 PM
-
Доброго дня подскажите пож. как удалить нужные символы из выделенного текста например frfrf_fr.frf1 надо удалить символы _,1,2,3,.,+ как прописать такой код? Спасибо
-
из выделенного текста ничего удалить невозможно. Для любого удаления нужно входить в режим текстового редактора и потом сохранять результат.
немного не правильно сформулировал, текст копируется в открытый блокнот и там мгновенно надо удалить лишние символы
-
Запускаешь этот скрипт и при копировании текста комбинацией (Ctrl+C) из него автоматически удаляются заданные символы.
IF((ISKEYDOWN(#CTRL)=1)&(ISKEYDOWN(#C)=1))
WHILE((ISKEYDOWN(#CTRL)=1)&(ISKEYDOWN(#C)=1))
WAITMS(5)
END_CYC
WAITMS(50)
TOCLIP(STRFILTER(FROMCLIP(),"_123.+",0))
ELSE
WAITMS(20)
END_IF
-
Подскажите, а как лучше поступить:
1. Выделить весь текст CTRL+A на странице браузера и потом обрабатывать из буфера (например обрезать) с помощью ряда условий до начала нужного текста.
2. Выделить часть текста, если это возможно с помощью CTRL+A (или CTRL+C) и дальше уже обрабатывать из буфера кусок текста меньшего размера.
Насколько влияет на время обработки текста, например, целый это кусок размером в 1000 печатных знаков или обрезанный до 300 знаков ?
KEYDOWN(#CTRL) // выделить
WAITMS(50)
KEYDOWN(#A)
WAITMS(100)
KEYDOWN(#CTRL) // копировать
WAITMS(50)
KEYDOWN(#C)
WAITMS(100)
KEYUP(#C) // отжать
KEYUP(#CTRL)
WAITMS(100)
KEYUP(#A) // отжать
KEYUP(#CTRL)
WAITMS(200)
TOCLIP(STRCUT2(FROMCLIP(), 1, STRPOS(FROMCLIP(), "Уведомления") - 1))
//------------------------- обработать данные
IF(STRPOS(FROMCLIP(), "Показать") ! 0)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#F)
WAITMS (100)
KEYUP (#F)
KEYUP (#CTRL)
WAITMS(100)
* * *
Код в строке 16, обрезающий предварительно текст, насколько он нужен ? Я предполагаю, что обработка самого дополнительного кода соизмерима со временем с тем выигрышем, что я получу от обрезки им текста...
Загнать текст в файл не хочу, я его сначала максимально кастрирую, а только потом уже готовый текст забрасываю в файл, но есть много вопросов по усовершенствованияю самого алгоритма обработки текста. Хочется ускорить процесс...
Возможно ли копирование части необходимого текста (по аналогии с Вашим кодом автоматического удаления заданных символов при копировании).
-
Конечно сразу искать "Показать" будет быстрее. Кроме того ты странно выделяешь и копируешь.
KEYDOWN(#CTRL) // выделить
WAITMS(50)
KEYPRESS(#A)
KEYUP(#CTRL)
WAITMS(50)
KEYDOWN(#CTRL) // копировать
WAITMS(50)
KEYPRESS(#C)
KEYUP(#CTRL)
WAITMS(200)
//------------------------- обработать данные
IF(STRPOS(FROMCLIP(), "Показать") ! 0)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS(#F)
KEYUP (#CTRL)
WAITMS(100)
// * * *
END_IF
-
Благодарю за подсказку... так всегда получается, когда сначала делаешь, а потом внимательно читаешь справку )))
SUB(ctrl_ac)
TOCLIP("") // очистить буфер
WAITMS(50)
LCLICK($X, $y) // стать на страницу
WAITMS(100)
KEYDOWN(#CTRL) // выделить
WAITMS(50)
KEYPRESS(#A)
KEYUP(#CTRL)
WAITMS(50)
KEYDOWN(#CTRL) // копировать
WAITMS(50)
KEYPRESS(#C)
KEYUP(#CTRL)
WAITMS(200)
END_SUB
ctrl_ac() // вызвать подпрограмму выделения и копирования
//------------------------- показать текст
$search = "Показать"
IF(STRPOS(FROMCLIP(), $search) ! 0)
KEYDOWN (#CTRL) // вызвать строку поиска
WAITMS (50)
KEYPRESS(#F)
KEYUP (#CTRL)
WAITMS(100)
KEYPRESS(#DELETE) // удалить предыдущий поиск
WAITMS(200)
KEYSTRING($search) // ввести текст для поиска
WAITMS(200)
GETSCREEN
IF_PIXEL_IN($X - 100, $y, $X, $y + 400, 7919672) // искать цвет выделения
LCLICK($_return1, $_return2) // кликнуть по найденному
WAITMS(200)
END_IF
ctrl_ac() // скопировать открытый текст
END_IF
//>>>>>>>>>>>>>>>>>>>>>>>>> перейти на следующую страницу
KEYPRESS(#RIGHT)
WAITMS(100)
* * *
Переделал весь скрипт, с учётом прочтённого на форуме )
И всё же, а как можно обходить кавычки, которые есть тексте, ну очень хочется копировать текст не вручную ? Я так понимаю, что необходимо, чтобы при вызове CTRL+C автоматически запускался сторонний типа менеджера буфера, который автоматически бы перехватывал и менял символы на заданные...
И где можно подробнее почитать рекомендации по задержкам ? Я читал на форуме, что это от многих фактов зависит, от мощности компьютера, как пример... но общие то рекомендации существуют, после каких действий они уместны и какая примерно продолжительность ?
По TOCLIP("") тоже мне не всё понятно... стоит ли это делать перед CTRL+C ? Мы же фактически затираем старые данные и вносим новые в буфер при нажатии этого сочетания клавиш...
Я испозую Clickermann для парсинга текста с помощью выделения всего в браузере через CTRL+A и дальнейшей сложной фильтрации и обрезки содержимого буфера, а потом ещё и в записанном с буфера текстовом файле, пока не остается только "чистый текст". Вот нашёл ещё возможность выделения по словам сочетанием клавиш CTRL+Shift+Left, CTRL+Shift+Right... Интересно попробовать и так )))
-
Нет нужды чистить буфер если это не требуется.
Задержки ставят там где это требуется, после кликов, например, или нажатия клавиш. 50-100 мс вполне достаточно, именно такие задержки и даже больше делает человек.
Другое дело задержки для разгрузки процессора. Некоторые команды типо GETSCREEN сильно нагружают проц если вызываются в цикле без задержек. Нужно смотреть нагрузку в диспетчере задач.
Для отладки можно выставить задержки 500 а то и 1000 см. Потом сократить там где это возможно.
-
Проблему "кавычек" при копировании текста (в браузере) я для себя почти решил... Всё почти нормально работает, осталось только обработать напильником... но у же спать хочется (
-
... а я тут всё придумываю... значит способ замены любых символов, кусков текста в самом браузере тоже где-то описана уже. Например можно заменить, вот так:
Было так:
http://prntscr.com/g7uhbj (http://prntscr.com/g7uhbj)
А теперь правильно:
http://prntscr.com/g7uhvt (http://prntscr.com/g7uhvt)
-
Попробуйте загружать исходник веб-страницы функцией HTTPGET("url"), она скачивает страницу сразу без кавычек. Это работает правда не на всех сайтах. Вот например адрес (страница этого форума) - "http://crapware.aidf.org/forum/index.php" - выглядит как файл, у которого есть путь, имя - "index" и расширение - "php". Такие страницы HTTPGET() может скачивать. Браузер при этом не нужен и задержки на его реакцию и прочие проверки типа "загрузилась ли страница?", "не тормознул ли комп?" - не требуются, это важно.
Иногда может быть полезным объединение в одну строку функции HTTPGET() с фильтром - STRFILTER(HTTPGET("url"), "set", 1), если в тексте есть символы, которые КМ не любит и возвращает вместо текста пустую строку.
$str = HTTPGET("http://crapware.aidf.org/forum/index.php") // загружаем исходный код страницы (без кавычек) в переменную
$str = STRFILTER($str, "0123456789", 0) // фильтруем (в данном случае - всю страницу), для примера - удалим из кода страницы все цифры
STRWRITELN("out.txt", $str, 1) // записываем результат в файл, или ...
TOCLIP($str) // записываем результат в буфер обмена
HALT
-
Благодарю за ответ... У меня специфическая задача: парсинг товара с ВКантакте с последующей фильтрацией текста. Т.е. в конце я получаю готовый файл, где есть: № п/п, ссылка, ссылка на изображение, артикул товара, description товара. А потом уже нормально в Excel всё это дорабатываю, добавляю рюшечки и через модуль загоняю на сайт... С Clickermann пока знаком поверхностно, около месяца, перебрал кучу алгоритмов парсинга, исполняемый код становится всё меньше, но зато комментариев в нём и вывода промежуточных значений для контроля всё больше ))) Я не могу ошибиться и перепутать артикул товара и цену... это не танчики ) Парсить обычные интернет-магазины хоть открытые хоть закрытые намного проще, там присутствует хоть какая-то логика в выкладке материала... этот же сайт не торговая площадка, поэтому и фильтрация двойная и контроль... А тут ещё и сам сайт закрыли для доступа в нашей стране, поэтому скорость уже не та через прокси...
А кавычки или другие символы/фразы легко подменить в самом браузере, как я показал на примере выше (ссылка на текст и изменённый в браузере текст). Да и они уже не проблема, спасибо kiril подсказал, что в новой версии всё работает без проблем, поставил её.
Скрипт то мой выполняет работу и так, но... хочется оптимизировать алгоритм его работы и код, мне по крайней мере это интересно...