Допилил парсер и таки вытянул города с авито) Вышел список аж из 3647 позиций, что довольно много. Прикрепляю файл, вдруг кому пригодится. Лично сам собираюсь использовать список этот у себя на сайте, для того, что бы дать посетителю возможность точно выбрать свой город.
Код парсера ниже, использовать надо в Chrome, с
плагином (спасибо dmitry_stas за наводку) и исключительно на мобильной версии сайта m.avito.ru
var goroda = ''; // создаем переменную для записи городов и областей
setTimeout('document.querySelectorAll("._1ttXp._91ScY")[0].click()', 4000); // открываем настройки
setTimeout('document.querySelectorAll("._2icBu._3OKc6")[0].click()', 7000); // открываем выбор города
function* sbor() {
var oblastii = document.querySelectorAll("._2wkKl"); // парсим количество областей
for(var i = 1; i < oblastii.length; ++i) { // запускаем цикл равный кол-ву областей
var oblasti = document.querySelectorAll("._2wkKl"); // парсим области
var idname = oblasti[i].innerText; // записываем название области
var id = i; // записываем номер области
oblasti[i].click(); // кликаем области по очереди в цикле
setTimeout(function(){ parser(idname, id); }, 2000); // запускаем функцию для парсинга городов внутри нажатой области
yield; // ставим цикл на задержку
}
}
var iterator = sbor(); // генератор
setTimeout(function(){ iterator.next(); }, 10000); // запускаем генератор
function parser(oblast, nomer) {
var gorod = document.querySelectorAll("._2wkKl"); // Парсим города
for(var grd = 1; grd < gorod.length; ++grd) {
goroda = goroda+gorod[grd].innerText+' | '+nomer+'. '+oblast+'\r\n'; // Пишем результаты в переменную
}
setTimeout('document.querySelectorAll(".tWeHs")[0].click();', 1000); // Возвращаемся к списку областей
setTimeout(function(){ iterator.next(); }, 2000); // Возозобновляем работу парсера областей после задержки
}
После завершения работы результаты можно сохранить выполнив в консоли:
var textToSave = goroda;
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'goroda.txt';
hiddenElement.click();