Author Topic: удалить нужные символы с текста  (Read 4585 times)

0 Members and 2 Guests are viewing this topic.

vas1liy1990

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
удалить нужные символы с текста
« on: July 15, 2017, 11:10:23 PM »
Доброго дня подскажите пож. как удалить нужные символы из выделенного текста например frfrf_fr.frf1  надо удалить символы _,1,2,3,.,+ как прописать такой код? Спасибо

vas1liy1990

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: удалить нужные символы с текста
« Reply #1 on: July 15, 2017, 11:38:57 PM »
из выделенного текста ничего удалить невозможно. Для любого удаления нужно входить в режим текстового редактора и потом сохранять результат.
немного не правильно сформулировал, текст копируется в открытый блокнот и там мгновенно надо удалить лишние символы

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: удалить нужные символы с текста
« Reply #2 on: July 16, 2017, 07:32:55 AM »
Запускаешь этот скрипт и при копировании текста комбинацией (Ctrl+C) из него автоматически удаляются заданные символы.
Code: (clickermann) [Select]
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

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
Re: удалить нужные символы с текста
« Reply #3 on: August 09, 2017, 10:33:44 PM »
Подскажите, а как лучше поступить:
1. Выделить весь текст CTRL+A на странице браузера и потом обрабатывать из буфера (например обрезать) с помощью ряда условий до начала нужного текста.
2. Выделить часть текста, если это возможно с помощью CTRL+A (или CTRL+C) и дальше уже обрабатывать из буфера кусок текста меньшего размера.

Насколько влияет на время обработки текста, например, целый это кусок размером в 1000 печатных знаков или обрезанный до 300 знаков ?

Code: (clickermann) [Select]
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, обрезающий предварительно текст, насколько он нужен ? Я предполагаю, что обработка самого дополнительного кода соизмерима со временем с тем выигрышем, что я получу от обрезки им текста...
Загнать текст в файл не хочу, я его сначала максимально кастрирую, а только потом уже готовый текст забрасываю в файл, но есть много вопросов по усовершенствованияю самого алгоритма обработки текста. Хочется ускорить процесс...

Возможно ли копирование части необходимого текста (по аналогии с Вашим кодом автоматического удаления заданных символов при копировании).
« Last Edit: August 09, 2017, 10:35:42 PM by Axelenz »
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: удалить нужные символы с текста
« Reply #4 on: August 11, 2017, 08:28:22 AM »
Конечно сразу искать "Показать" будет быстрее. Кроме того ты странно выделяешь и копируешь.

Code: (clickermann) [Select]
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

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
Re: удалить нужные символы с текста
« Reply #5 on: August 12, 2017, 08:51:04 PM »
Благодарю за подсказку... так всегда получается, когда сначала делаешь, а потом внимательно читаешь справку )))

Code: (clickermann) [Select]
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... Интересно попробовать и так )))
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: удалить нужные символы с текста
« Reply #6 on: August 12, 2017, 09:30:55 PM »
Нет нужды чистить буфер если это не требуется.

Задержки ставят там где это требуется, после кликов, например, или нажатия клавиш. 50-100 мс вполне достаточно, именно такие задержки и даже больше делает человек.

Другое дело задержки для разгрузки процессора. Некоторые команды типо GETSCREEN сильно нагружают проц если вызываются в цикле без задержек. Нужно смотреть нагрузку в диспетчере задач.

Для отладки можно выставить задержки 500 а то и 1000 см. Потом сократить там где это возможно.

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
Re: удалить нужные символы с текста
« Reply #7 on: August 13, 2017, 04:05:26 AM »
Проблему "кавычек" при копировании текста (в браузере) я для себя почти решил... Всё почти нормально работает, осталось только обработать напильником... но у же спать хочется (
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
Re: удалить нужные символы с текста
« Reply #8 on: August 13, 2017, 09:37:54 AM »
... а я тут всё придумываю... значит способ замены любых символов, кусков текста в самом браузере тоже где-то описана уже. Например можно заменить, вот так:

Было так:

http://prntscr.com/g7uhbj


А теперь правильно:

http://prntscr.com/g7uhvt
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."

Атеист

  • Guest
Re: удалить нужные символы с текста
« Reply #9 on: August 13, 2017, 04:33:38 PM »
Попробуйте загружать исходник веб-страницы функцией HTTPGET("url"), она скачивает страницу сразу без кавычек. Это работает правда не на всех сайтах. Вот например адрес (страница этого форума) - "http://crapware.aidf.org/forum/index.php" - выглядит как файл, у которого есть путь, имя - "index" и расширение - "php". Такие страницы HTTPGET() может скачивать. Браузер при этом не нужен и задержки на его реакцию и прочие проверки типа "загрузилась ли страница?", "не тормознул ли комп?" - не требуются, это важно.
Иногда может быть полезным объединение в одну строку функции HTTPGET() с фильтром - STRFILTER(HTTPGET("url"), "set", 1), если в тексте есть символы, которые КМ не любит и возвращает вместо текста пустую строку.

Code: (clickermann) [Select]
$str = HTTPGET("http://crapware.aidf.org/forum/index.php") // загружаем исходный код страницы (без кавычек) в переменную

$str = STRFILTER($str, "0123456789", 0) // фильтруем (в данном случае - всю страницу), для примера - удалим из кода страницы все цифры

STRWRITELN("out.txt", $str, 1) // записываем результат в файл, или ...

TOCLIP($str) // записываем результат в буфер обмена

HALT

Axelenz

  • Освоившийся
  • **
  • Posts: 31
  • Парсинг сайтов, наполнение интернет-магазинов
    • View Profile
Re: удалить нужные символы с текста
« Reply #10 on: August 13, 2017, 05:15:54 PM »
Благодарю за ответ... У меня специфическая задача: парсинг товара с ВКантакте с последующей фильтрацией текста. Т.е. в конце я получаю готовый файл, где есть: № п/п, ссылка, ссылка на изображение, артикул товара, description товара. А потом уже нормально в Excel всё это дорабатываю, добавляю рюшечки и через модуль загоняю на сайт... С Clickermann пока знаком поверхностно, около месяца, перебрал кучу алгоритмов парсинга, исполняемый код становится всё меньше, но зато комментариев в нём и вывода промежуточных значений для контроля всё больше ))) Я не могу ошибиться и перепутать артикул товара и цену... это не танчики ) Парсить обычные интернет-магазины хоть открытые хоть закрытые намного проще, там присутствует хоть какая-то логика в выкладке материала... этот же сайт не торговая площадка, поэтому и фильтрация двойная и контроль... А тут ещё и сам сайт закрыли для доступа в нашей стране, поэтому скорость уже не та через прокси...
А кавычки или другие символы/фразы легко подменить в самом браузере, как я показал на примере выше (ссылка на текст и изменённый в браузере текст). Да и они уже не проблема, спасибо kiril подсказал, что в новой версии всё работает без проблем, поставил её.
Скрипт то мой выполняет работу и так, но... хочется оптимизировать алгоритм его работы и код, мне по крайней мере это интересно...
"Можно бесконечно смотреть на три вещи: как течёт вода, как горит огонь и как Clickermann работает вместо тебя..."