Автокликер Clickermann :: Форум
Основной раздел => Использование => Topic started by: shef4ig on September 18, 2017, 06:17:45 PM
-
Всем привет, и заранее спасибо.
Изначально стоит задача брать из файла логины в инсте, подставлять в хвост ссылки. Потом заходить на страницу и вытягивать оттуда количество подписчиков, подписок и количество постов. Все это помещать в екселевский файл по датам и логинам соответственно.
С первым этапом справился как мог))) через ctrl +U в браузере перехожу на страницу с кодом.ю там нахожу параметр "meta content" кликаю на него 2 раза и загоняю в буфер и в файл соответственно. вот как выглядит результат в файле (есть проверка на несуществующие аки):
"/shef4ig/" /><meta content="100 подписчиков, 114 подписок, 116 публикаций — посмотрите в Instagram ф"
"/darya_andr22/" /><meta content="822 подписчиков, 3,872 подписок, 81 публикаций — посмотрите в Insta"
"/sofiya_min23/" /><meta content="1,078 подписчиков, 4,554 подписок, 81 публикаций — посмотрите в Ins"
"shef4ig1"+"invalid"
Теперь задача взять строку и из нее вытянуть 3 цифры: количество подписчиков, подписок и постов и загнать в эксель в 3 колонки с привязкой к дате (первая строка файла: дата).
-
как найти и занести в файл количество подписчиков, с остальным я худо-бедно разберусь
-
Clickermann v4.13 x32
IF(TFCOUNT("output.txt") = 0) // если выходной файл пуст, вставляем в него заголовки колонок
TFWRITE("output.txt", "Пользователь Подписчиков Подписок Публикаций") //
END_IF
TFREADARR("input.txt", $arr) // загружаем из входного файла данные в массив
$arr_size = ARRSIZE($arr) // размер массива
FOR($i = 0, $i < $arr_size) // перебираем все строки массива
IF(STRPOS($arr[$i], "content=") != 0) // берем только строки содержащие фразу "content="
$nickname = STRCUT2($arr[$i], 3, STRPOS($arr[$i], "/><meta") - 4) // имя пользователя
$content = STRCUT2($arr[$i], STRPOS($arr[$i], "content=") + 9, STRPOS($arr[$i], "публикаций") + 9) // контент
$content = STRREPLACE($content, " подписчиков, ", " ") // меняем запятую на разделитель, например на табулятор
$content = STRREPLACE($content, " подписок, ", " ")
$content = STRREPLACE($content, "публикаций", "") // вырезаем из контента мусор
TFWRITE("output.txt", STRCONCAT($nickname, " ", $content)) // собираем выходную строку и записываем ее в файл
END_IF
END_CYC
HALT
// Импортируем файл "output.txt" в Excel. Вкладка "Данные" ==> Из текста...
// Дальше как обычно. Разделитель - знак табуляции.
// Файл сохраняем. И настраиваем автоматический импорт. Кнопка "Обновить все" ==> Свойства подключения.
-
Clickermann v4.13 x32
IF(TFCOUNT("output.txt") = 0) // если выходной файл пуст, вставляем в него заголовки колонок
TFWRITE("output.txt", "Пользователь Подписчиков Подписок Публикаций") //
END_IF
TFREADARR("input.txt", $arr) // загружаем из входного файла данные в массив
$arr_size = ARRSIZE($arr) // размер массива
FOR($i = 0, $i < $arr_size) // перебираем все строки массива
IF(STRPOS($arr[$i], "content=") != 0) // берем только строки содержащие фразу "content="
$nickname = STRCUT2($arr[$i], 3, STRPOS($arr[$i], "/><meta") - 4) // имя пользователя
$content = STRCUT2($arr[$i], STRPOS($arr[$i], "content=") + 9, STRPOS($arr[$i], "публикаций") + 9) // контент
$content = STRREPLACE($content, " подписчиков, ", " ") // меняем запятую на разделитель, например на табулятор
$content = STRREPLACE($content, " подписок, ", " ")
$content = STRREPLACE($content, "публикаций", "") // вырезаем из контента мусор
TFWRITE("output.txt", STRCONCAT($nickname, " ", $content)) // собираем выходную строку и записываем ее в файл
END_IF
END_CYC
HALT
// Импортируем файл "output.txt" в Excel. Вкладка "Данные" ==> Из текста...
// Дальше как обычно. Разделитель - знак табуляции.
// Файл сохраняем. И настраиваем автоматический импорт. Кнопка "Обновить все" ==> Свойства подключения.
Спасибо, попробывал запустить на 4.12 не сработало, завтра буду ковыряться - искать - в чем там проблема. Сам подход понял, буду эксперементировать
-
всё это реально, кроме формата эксель, Clickermann обучен работать с форматом .txt
Рекомендую работать с форматом .csv вместо .txt. И "Открывать с помощью" Excel. Именно так и поступаю в подобных случаях.
Но я всегда создаю два файла: .txt (он как исходник) и .csv, который дальше коверкается формулами до неузнаваемости...
-
Clickermann v4.13 x32
версию программы неверно указали 4.13.004b x32, во всех более ранних 4.13 ваши художества работать не будут.
я не нахожу в инете этой версии программы
-
Рекомендую работать с форматом .csv вместо .txt. И "Открывать с помощью" Excel.
И правильно учитываются экранированные разделители?
.csv от Microsoft программ друг друга не понимают. Сохраняешь как "csv разделитель запятые", на выходе - разделитель точка с запятой.
Перенос строк CRLF. Перенос строк внутри ячейки просто LF
-
всё это реально, кроме формата эксель, Clickermann обучен работать с форматом .txt
Рекомендую работать с форматом .csv вместо .txt. И "Открывать с помощью" Excel. Именно так и поступаю в подобных случаях.
Но я всегда создаю два файла: .txt (он как исходник) и .csv, который дальше коверкается формулами до неузнаваемости...
Да, действительно есть такой текстовый формат - .csv. :D Я не додумался, сразу про авто-импорт в Ексель вспомнил почему-то, хотя на рабочем столе валяется ярлык программы Total CSV Converter, которую юзал долгое время по работе. Axelenz спасибо за подсказку. :) Нормально работает.
Жаль только что при открытом файле .csv в Екселе, кликер не может в него запись делать, ошибку выдает. С импортом такого не происходит, можно на ходу импортировать и сразу видеть текущее состояние базы. Вот и объединим оба способа. Если при импорте кликер и Ексель все таки встретятся, то может быть ошибка, но это тоже решаемо. Нормально получилось. :)
-
И правильно учитываются экранированные разделители?
.csv от Microsoft программ друг друга не понимают. Сохраняешь как "csv разделитель запятые", на выходе - разделитель точка с запятой.
Перенос строк CRLF. Перенос строк внутри ячейки просто LF
Я парсю текст с браузера. Разделителем текста в строке (для дальнейшей разбивки на столбцы в Excel) служит не ";" а "|". Хотя бы потому, что в моём тексте точка с запятой встречаются, да и в плане наглядности "|" намного лучший разделитель...
Дальше с текстом работаю в Excel исключительно с помощью "горячих" клавиш... Как пример, разделить текст:
excel:
//------------------------- Закрыть окна Clickermann и Cyberfox ----------------
WNDSTATE(WNDFIND("Редактор - C:\Clickermann\"), 0)
WAITMS(300)
WNDSTATE(WNDFIND("Cyberfox"), 0)
WAITMS(300)
//========================= ОБРАБОТКА ТЕКСТА В EXCEL ===========================
//------------------------- Открыть файл. Расширить окно. Назначить язык En -----
EXECUTE("input.csv")
WAIT(1)
WNDSETINFO(WNDFIND("input.csv - Excel"), 0, 0, 1440, 862)
WAIT(1)
SETKBLAYOUT(WNDFIND("input.csv - Excel"), 1033)
WAIT(1)
//------------------------- Вкладка Данные. Текст по столбцам ------------------
// выделить столбец до конца вниз
KEYDOWN(#CTRL)
WAITMS(50)
KEYDOWN(#SHIFT)
WAITMS(100)
KEYPRESS(#DOWN)
KEYUP(#SHIFT)
KEYUP(#CTRL)
WAIT(1)
// выбрать из закладки данные текст по столбцам
KEYDOWN(#ALT)
WAITMS(50)
KEYPRESS(192)
KEYUP(#ALT)
WAIT(1)
KEYPRESS(#9)
WAIT(1)
SETKBLAYOUT(WNDFIND("input.csv - Excel"), 1049)
WAIT(1)
KEYPRESS(#H)
WAITMS(300)
KEYPRESS(#TAB)
WAITMS(200)
KEYPRESS(#TAB)
WAITMS(300)
KEYPRESS(#ENTER)
WAIT(1)
KEYPRESS(#L)
WAITMS(500)
SETKBLAYOUT(WNDFIND("input.csv - Excel"), 1033)
WAIT(1)
KEYDOWN(#SHIFT)
WAITMS(50)
KEYPRESS(220)
KEYUP(#SHIFT)
WAIT(1)
KEYPRESS(#ENTER)
WAITMS(500)
KEYPRESS(#ENTER)
WAIT(1)
//------------------------- Перейти на стиль ссылок R1C1
KEYPRESS(#ALT)
WAIT(1)
KEYPRESS(65)
WAITMS(500)
KEYPRESS(#V)
WAIT(1)
KEYPRESS(#DOWN)
WAITMS(500)
KEYPRESS(#TAB)
WAITMS(300)
KEYPRESS(#1)
WAITMS(500)
KEYPRESS(#ENTER)
WAIT(1)
Ну понятно, что это всего лишь часть кода, весь код больше 500 строк... и в основном это конечно работа в Excel. Я перевёл решение всех однотипных нудных повторяющихся заданий на Автокликер, а дальше уже максимально обработанный файл всё равно приходится проверять.
Задержки большие, согласен, но при меньших может что-то не срабатывать, поэтому для себя дешевле посидеть лишнюю минуту и подождать, чем потом вылавливать косяки... (((
У меня это работает на Win 8.1 + Microsoft Office 2016.
Да... разделяю данные "|" перед записью в файл:
$str = TFCOUNT("in.txt")
//------------------------- записать данные ---------------------------------
$txt = "|"
IF($str > 0)
$i = 0
FOR($n = 0, $n < $str)
IF(STRLEN(STRREADLN("in.txt", 1)) > 2)
$arr[$n] = STRREADLN("in.txt", 1)
WAITMS(100)
$txt = STRCONCAT($txt, $arr[$n], "|")
WAITMS(100)
END_IF
ELSE
$n = $n - 1
END_IF
TFDelete("in.txt", 1)
WAITMS(100)
INC($i)
IF($i = $str)
$n = $str
END_IF
END_CYC
UNDEFINE($arr)
END_IF
$txt = STRCONCAT($p, "|", $art, "|", $url, "|", $pho, $txt)
STRWRITELN("input.txt", $txt)
WAITMS(200)
STRWRITELN("input.csv", $txt)
WAITMS(200)
Смысл приведённого примера:
Данные вначале записываются в файл in.txt который обрабатывается под Ваши нужды и дальше становится уже чистовой строкой для записи в другой файл input.txt (in.txt очищается при каждой итерации), в котором таких строк уже много, они и разделяются в дальнейшем на столбцы с помощью разделителя "|".
-
Жаль только что при открытом файле .csv в Екселе, кликер не может в него запись делать, ошибку выдает.
В принципе, пару месяцев назад я именно так и делал, вёл запись с браузера, окно которого находилось сверху, непосредственно с помощью Автокликера в файл Excel (окно которого было открыто внизу) по строкам и столбцам, с помощью "горячих" клавиш, но когда насытился зрелищем "ух ты, как оно клёво работает", то перешёл на более быстрый и правильный способ писать всё сразу в два файла и потом издеваться уже над одним, всегда имея копию в .txt
Самый простой способ получить файл .csv из .txt - это конечно же просто изменить его расширение )))