Экспорт информации о фамилии / имени владельца живого журнала из моего круга

Работает не очень, так как где-то после 200 просмотров moikrug хочет капчу. Лучше, похоже, будет работать поиск в Google по словам livejournal "Консалтинг / HR-консалтинг" java site:moikrug.ru
var timeout = 500;

function waitFor(f) {
  setTimeout(function() {
    try {
      f();
    } catch (e) { 
      console.log('waitFor(): ' + e);
      waitFor(f);
    }
  }, timeout);
}

var allowedNames = ["Аврора", "Агнесса", "Агния", "Ада", "Адам", "Адольф", "Алевтина", "Александр", "Александра", "Алексей", "Алёна", "Алина", "Алиса", "Алла", "Альбина", "Анастасия", "Анатолий", "Ангелина", "Андрей", "Анжелика", "Анна", "Антон", "Антонина", "Анфиса", "Аристарх", "Аркадий", "Арсен", "Армен", "Артём", "Артур", "Астра", "Афанасий", "Белла", "Берта", "Богдан", "Борис", "Бронислав", "Вадим", "Валентин", "Валентина", "Валерий", "Валерия", "Варвара", "Василий", "Венера", "Вера", "Вероника", "Виктор", "Виктория", "Виолетта", "Виталий", "Владимир", "Владислав", "Всеволод", "Вячеслав", "Гавриил", "Галина", "Гелла", "Геннадий", "Георгий", "Герман", "Глеб", "Григорий", "Давид", "Даниил", "Дарья", "Денис", "Диана", "Дмитрий", "Ева", "Евгений", "Евгения", "Евдоким", "Егор", "Екатерина", "Елена", "Елизавета", "Ефим", "Жанна", "Захар", "Зинаида", "Зоя", "Иван", "Иветта", "Игорь", "Илья", "Инна", "Иннокентий", "Ирина", "Карина", "Карл", "Кира", "Кирилл", "Клавдия", "Клара", "Клим", "Константин", "Кристина", "Лариса", "Лев", "Леонид", "Леонтий", "Лидия", "Лилия", "Любовь", "Людмила", "Майя", "Макар", "Максим", "Маргарита", "Марика", "Марина", "Мария", "Марта", "Мартин", "Милена", "Михаил", "Надежда", "Наталья", "Наталия", "Нелли", "Никита", "Николай", "Нина", "Оксана", "Олег", "Олеся", "Ольга", "Павел", "Петр", "Полина", "Прохор", "Раиса", "Регина", "Римма", "Роза", "Роксана", "Роман", "Руслан", "Светлана", "Семен", "Серафима", "Сергей", "Софья", "Станислав", "Стелла", "Степан", "Сусанна", "Тамара", "Тарас", "Татьяна", "Тимур", "Фаина", "Фёдор", "Филипп", "Эдуард", "Элеонора", "Эльвира", "Эльза", "Эмма", "Эрнест", "Юлия", "Юнона", "Юрий", "Яков", "Яна", "Ярослав"];
var skipNames = ["Денис Кормалев"];

function arrToHash(arr) {
  var i, hash = [];
  for (var i = 0; i < arr.length; i++) hash[arr[i]] = 1;
  return hash;
}
allowedNames = arrToHash(allowedNames);
skipNames = arrToHash(skipNames);

var names = [], links = [];
var w = self;

function page() {
  if (w.document.getElementsByClassName('b-copyright').length != 1) throw 'Had not load';

  var d = w.document.getElementsByClassName('searchable person_name');
  var n = d.length;
  
  for (var i = 0; i < n; i++) {
    var name = d[i].innerText;
	if (!skipNames[name]) {
	  names.push(name);
	  links.push(d[i].firstChild.getAttribute('href'));
	}
  }
  
  var np = w.document.getElementsByClassName('next_page');
  var oldw = w;
  if (np.length == 1) {
	console.log(np[0].getAttribute('href'));
    w = window.open(np[0].getAttribute('href'), '_blank');
	waitFor(page);
  } else {
    console.log(JSON.stringify(names));
	console.log(JSON.stringify(links));
  };
  if (oldw != self) oldw.close();
}

page();
-------
var livejournal = {};

function livejournalPerson(i) {
  if (--i < 0) {
    console.log(JSON.stringify(livejournal));
    return;
  }
  var name = names[i];
  var f_name = name.replace(/ .*/, '');
  if (!allowedNames[f_name]) {
    console.log('Skipped bad name: ' + name);
	livejournalPerson(i);
	return;
  }
  w = window.open(links[i]);
  waitFor(function() {
    if (w.document.getElementsByClassName('b-copyright').length != 1) throw 'Had not load';
	var html = w.document.body.innerHTML;
	if (/LiveJournal<\/a>/.test(html)) {
	  livejournal[f_name] = RegExp.$1;
	} else if (/\1<\/a>/.test(html)) {
	  livejournal[f_name] = RegExp.$1;
	}
	w.close();
    livejournalPerson(i);
  });
}

livejournalPerson(names.length);
Comments