Skip to content

pan7ae/vk_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

vk_parser

Данная система позволяет получить список друзей ВКонтакте и состоит из двух файлов:

  • main.py;
  • vk_task.py;

main.py

Для того чтобы запустить данную программу, необходимо выполнить в командной строке (терминале) следующую команду:

python main.py <user_id> <access_token> [--output_format <format>] [--output_name <name>]

Где:

  • user_id — ID пользователя ВКонтакте, список друзей которого вы хотите извлечь (обязательно);
  • access_token — токен доступа к VK API, который вы должны получить на сайте VK API (обязательно);
  • --output_format — формат выходного файла. Может быть CSV, JSON, TSV или YAML. Значение по умолчанию — CSV (необязательно);
  • --output_name — имя выходного файла (путь выходного файла). Значение по умолчанию report (необязательно);

Например

python main.py 123456789 token123 --output_format json --output_name my_friends

Данная команда выполнит извлечение списка друзей пользователя ВКонтакте с ID 123456789, используя токен доступа к VK API token123, и сохранит его в JSON-файл с именем my_friends.json в текущей директории.

vk_task.py

Данный файл состоит из трех классов:

  • HttpClient;
  • Paginator;
  • FriendsParser;

HttpClient

Этот класс содержит один метод request, который выполняет HTTP-запрос к API-серверу ВКонтакте и возвращает информацию о друзьях в виде списка при условии, что код состояния ответа равен 200. В противном случае он вызывает исключение с соответствующем сообщением об ошибке.

Paginator

Данный класс позволяет нам получать список друзей пользователя, у которого количество друзей превышает 5000 человек. Этот класс содержит два метода: get_friends и get_all_friends.
Метод get_friends получает в качестве входных данных смещение (offset) и возвращает список друзей для заданного ID пользователя, ограниченный параметром count.
Метод get_all_friends возращает список всех друзей пользователя (учет большого количества друзей).
Оба метода используют класс HttpClient для выполнения HTTP-запроса к API-серверу ВКонтакте. Максимальное количество друзей ВКонтакте — 10000 человек. Данная система справляется с ограничением по оперативной памяти.

FriendsParser

Этот класс содержит пять методов: parse, extract_data, get_value_from_data, get_date_value и create_report.
Метод parse отвечает за вызов метода get_all_friends класса Paginator и получение списка друзей пользователя.
Метод extract_data извлекает следующую информацию о каждом друге из списка друзей, возращаемую классом Paginator:

  • Имя;
  • Фамилия;
  • Страна;
  • Город;
  • Дата рождения в ISO формате;
  • Пол;

Метод get_value_from_data используется для получения страны и города. Возвращает 'title' для страны и города соответственно.
Метод get_date_value принимает дату в формате DD.MM.YYYY и возращает ее в ISO формате, т.е. YYYY-MM-DD. Если у пользователя отсутствует дата рождения или в ней отсутствует год рождения, то возвращается значение None. Вызывается методом create_report.
Метод create_report создает отчет в одном из трех форматов: CSV, JSON, TSV или YAML в соответствии со значением входного параметра output_format. Метод csv_tsv_file_write используется для сохранения отчета либо в формат CSV, либо в TSV. Вызывается методом create_report.

Использование:

В этой системе используется модуль argspace для определения и обработки аргументов командной строки (терминала). Класс argspace.ArgumentParser позволяет нам определять ожидаемые аргументы и их типы, а также любых необязательные (опциональные) аргументы и их значения по умолчанию:

parser = argparse.ArgumentParser(description="VK friends parser")
parser.add_argument("user_id", type=int, help="VK user ID")
parser.add_argument("access_token", type=str, help="VK API access token")
parser.add_argument(
    "--output_format",
    type=str,
    choices=["csv", "json", "tsv", "yaml"],
    default="csv",
    help="Output file format"
)
parser.add_argument(
    "--output_name",
    type=str,
    default="report",
    help="Output file name"
)

После запуска программы в командной строке (терминале) происходит следующее:

  1. Получаем доступ к аргументам, указанным в командной строке (терминале). Создается экземпляр класса FriendsParser, которому передаются эти аргументы:
if __name__ == '__main__':
    args = parser.parse_args()
    vk_parser = FriendsParser(args.user_id, args.access_token, args.output_format, args.output_name)
  1. Выполняется вызов метода parse, чтобы получить всех друзей пользователя:
friends = vk_parser.parse()
  1. Вызывается метод create_report, позволяющий создать отчет из списка друзей в одном из требуемых форматов:
vk_parser.create_report(friends)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages