SaveText.Ru

Без имени
  1. try {
  2.     // ----------------------------------------------------------------------------------
  3.     // ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
  4.     // ----------------------------------------------------------------------------------
  5.     var div_accounts = document.getElementsByClassName("isgrP"); // класс тега div списка аккаунтов
  6.     var ul_accounts = document.getElementsByClassName("jSC57  _6xe7A"); // класс тега ul списка аккаунтов
  7.     var li_accounts = document.getElementsByClassName("wo9IH"); // класс тега li списка тег аккаунтов
  8.     var height_scrolling = []; // массив размеров (высот) скроллинга
  9.     // ----------------------------------------------------------------------------------
  10.     // СКОРОСТЬ ПРОКРУТКИ
  11.     // Задаётся в миллисекундах
  12.     // ----------------------------------------------------------------------------------
  13.     var speed_scrolling = 150;
  14.     // ----------------------------------------------------------------------------------
  15.     // УКАЖИТЕ ТРЕБУЕМОЕ КОЛ-ВО АККАУНТОВ ДЛЯ СБОРА
  16.     // Если указать 0 (ноль) - соберет все аккаунты, по умолчанию стоит 700, свыше возможны
  17.     // ограничения - лимиты самого Instagram (ошибка 429)
  18.     // ----------------------------------------------------------------------------------
  19.     var user_count = 2000;
  20.     // ----------------------------------------------------------------------------------
  21.     // ДЛЯ СБОРА ИМЕН АККАУНТОВ УКАЖИТЕ true ВМЕСТО false
  22.     // ----------------------------------------------------------------------------------
  23.     var user_name = false; // true
  24.     // ----------------------------------------------------------------------------------
  25.     // Выборка кол-ва подписчиков и подписок по языку RU-EN
  26.     // Классы расположены на главной странице Подписчики-Подписки
  27.     // ----------------------------------------------------------------------------------
  28.     var titleH1 = document.getElementsByClassName("m82CD")[0]; // класс тега h1 заголовка окна
  29.     var titleDIV = titleH1.getElementsByTagName("div")[0]; // тег div заголовка
  30.     var title = titleDIV.innerHTML;
  31.     // ----------------------------------------------------------------------------------
  32.     // УСЛОВИЕ ВЫБОРА ПОДПИСЧИКИ ИЛИ ПОДПИСКИ
  33.     // ----------------------------------------------------------------------------------
  34.     if (title == "Подписчики" || title == "Followers") {
  35.         var total_count = document.getElementsByClassName("g47SY")[1].innerHTML;
  36.     } else {
  37.         var total_count = document.getElementsByClassName("g47SY")[2].innerHTML;
  38.     }
  39.     // ----------------------------------------------------------------------------------
  40.     // Общее кол-во аккаунтов для сбора
  41.     // ----------------------------------------------------------------------------------
  42.     total_count = total_count.match(/[^"]+/g).join('').match(/[^s]+/g).join('').match(/[^,]+/g).join('');
  43.     // ----------------------------------------------------------------------------------
  44.     console.log('%cОбщее кол-во аккаунтов для сбора: ' + total_count + ' шт.', 'color: #13a555; font-size:16px;');
  45.     // ----------------------------------------------------------------------------------
  46.     if (user_count != 0) {
  47.         console.log('%cКол-во заданное пользователем: ' + user_count + ' шт.', 'color: #13a555; font-size:16px;');
  48.     }
  49.     // ----------------------------------------------------------------------------------
  50.     console.log('%cНачался сбор данных, дождитесь выполнения...', 'color: #13a555; font-size:16px;');
  51.     // ----------------------------------------------------------------------------------
  52.     // ФУНКЦИЯ СБОРА ДАННЫХ
  53.     // ----------------------------------------------------------------------------------
  54.     function start_parsing() {
  55.         var accounts = ul_accounts[0].innerHTML;
  56.         // ------------------------------------------------------------------------------
  57.         // Разбор ников аккаунтов
  58.         // ------------------------------------------------------------------------------
  59.         var result_nick = accounts.match(/title="[^"]+"/g);
  60.         result_nick.splice(user_count);
  61.         var result_count = result_nick.length;
  62.         result_nick = result_nick.join(' ').match(/"[^"]+"/g).join(' ').match(/[^"]+/g).join('').match(/[^s]+/g).join('n');
  63.         // ------------------------------------------------------------------------------
  64.         // Разбор имен аккаунтов
  65.         // ------------------------------------------------------------------------------
  66.         if (user_name == true) {
  67.             var result_name = accounts.match(/<div class="wFPL8 ">[^<]+/g)
  68.             result_name.splice(user_count);
  69.             result_nick = result_nick.match(/[^n]+/g);
  70.             result_name = result_name.join('').match(/>[^<]+/g).join('').match(/[^>]+/g).join('n');
  71.             result_name = result_name.match(/[^n]+/g);
  72.             // --------------------------------------------------------------------------
  73.             // Создаем ассоциативный массив и преобразовываем в строку
  74.             // --------------------------------------------------------------------------
  75.             var result_nick_name = {};
  76.             for (var i = 0; i < result_nick.length; i++) {
  77.                 result_nick_name[result_nick[i]] = result_name[i];
  78.             }
  79.             result_nick_name = JSON.stringify(result_nick_name);
  80.             result_nick_name = result_nick_name.match(/[^{}"]+/g).join('').match(/[^,]+/g).join('n').match(/[^:]+/g).join(' : ');
  81.         }
  82.         if (user_name == true) {
  83.             console.log(result_nick_name);
  84.         } else {
  85.             console.log(result_nick);
  86.         }
  87.         console.log('%cАккаунтов собрано: ' + result_count + ' шт.', 'color: #13a555; font-size:18px;');
  88.         console.log('%cВыделите собранные имена аккаунтов выше и нажмите CTRL-C, чтобы скопировать.', 'color: #13a555; font-size:16px;');
  89.         console.log('%cЗаходите подписывайтесь, ставьте лайки! https://Instagram.com/leoneed.pro | http://www.leoneed.pro ', 'color: #1d6ba3; font-size:14px;');
  90.     }
  91.     // ----------------------------------------------------------------------------------
  92.     // ФУНКЦИЯ СКРОЛЛИНГА
  93.     // ----------------------------------------------------------------------------------
  94.     function run_scrolling() {
  95.         // Определяем размер (высоту) прокрутки div_accounts
  96.         var div_accounts_height = div_accounts[0].scrollHeight;
  97.         // Заносим размеры в массив
  98.         height_scrolling.push(div_accounts_height);
  99.         // Если пользовательское значение больше реального или установлен 0, то собрать все аккаунты
  100.         if (user_count >= total_count || user_count == 0) {
  101.             user_count = total_count;
  102.         }
  103.         if ((li_accounts.length != total_count) && (user_count > li_accounts.length) && (height_scrolling[0] != height_scrolling[4])) {
  104.             div_accounts[0].scrollBy(0, 500);
  105.             //  Если в массиве размеров скроллинга более 5 элементов, обнуляем
  106.             if (height_scrolling.length == 5) {
  107.                 height_scrolling = [];
  108.             }
  109.             var timeoutID = setTimeout('run_scrolling()', speed_scrolling);
  110.         } else {
  111.             clearTimeout(timeoutID);
  112.             start_parsing();
  113.         }
  114.         return false;
  115.     }
  116.     // ----------------------------------------------------------------------------------
  117.     // СТАРТ РАБОТЫ СКРОЛЛИНГА + СБОР ДАННЫХ
  118.     // ----------------------------------------------------------------------------------
  119.     run_scrolling();
  120.     // ----------------------------------------------------------------------------------
  121. } catch (e) {
  122.     console.log('%cНажмите на странице Instagram на Подписчиков или Подписки, и запустите заново скрипт', 'color: #a22e1c; font-size:18px;');
  123. }

Share with your friends:

Print