Вот прошла уже куча времени,а я лишь теперь осилил написать очередной пост в бложег.
Ну что же дорогой читатель, сегодня я тебе расскажу как и зачем собрать базу мобильных номеров из вконтачика.
Ну так зачем?
Вариантов уйма. Можем составить статистику о наиболее предпочитаемом операторе относительно города\региона. Можем собрать базу номеров телефонов для дальнейшего пробива по базе и тд.
А как всё это организовать?
Берём на github-e мой скриптик https://github.com/maximusfox/pl-VKPhoneNumbersParser и запускаем его. Ну и ждём пока закончит он свою работу.
Особенности скрипта:
- Определение оператора связи (Utel, PeopleNET, Intertelecom, MTS, Life, KievStar)
- Не проверяет страницы пользователей номера которых уже были собраны
- Асинхронные запросы к сайту использую Coro вместо форков или потоков
- Для сокращения трафика используется предварительная проверка на наличие номера через API
Ну что, хватит уже разглагольствовать, пойдём делать то самое о чём написано!
И так, первым делом нужно скачать скрипт и поставить зависимости.
Сначала поставим cpanminus. Его можно поставить либо из репозиториев либо из CPAN (cpan App::cpanminus). Так же нужно поставить sqlite3.
Качаем скриптец:
git clone git@github.com:maximusfox/pl-VKPhoneNumbersParser.git
cd pl-VKPhoneNumbersParser
Ставим зависимости:
sudo cpanm —installdeps .
Запускаем:
chmod +x start.pl
./start.pl —help
И видим вот такой вот хелп:
help: start.pl [OPTIONS...]
Options:
—first, -f First user ID
—last, -l Last user ID
—db, -d SQLite databse location
—threads, -t Threads count
—help, -h Show this help message
И так, доступные нам параметры скрипта:
Options:
--first, -f ID первого пользователя
--last, -l ID последнего пользователя
--db, -d Расположение базы данных SQLite
--threads, -t Количество потоков
--help, -h Отобразить это сообщение
Соответственно запускаем скрипт:
./start.pl -t 50 -f 1 -l 10000
Парсер пройдётся по страницам и запишет нам результаты парсинга в БД.
После их можно извлечь любым менеджером SQLite БД.
В целях тестирования скрипта, я запустил его и собрал ~200 номеров телефонов.
Вот вам пример того что я собрал: