Skip to content

MrK0RN/SovFed_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Парсер данных о сенаторах Совета Федерации РФ

Этот проект предназначен для сбора и структурирования информации о членах Совета Федерации Федерального Собрания Российской Федерации с официального сайта.

Структура проекта

├── config.py           # Конфигурационные параметры
├── main.py            # Основной скрипт для парсинга данных
├── selenium/
   ├── main_sel.py        # Скрипт с использованием Selenium для обхода защиты
   ├── scrap.py           # Базовый класс скрапера
   ├── config.py           # Конфигурационные параметры
├── save_links.py      # Скрипт для сохранения ссылок на профили сенаторов
├── scraper.py         # Основной класс для парсинга данных
├── senator.py         # Модель данных сенатора
├── files/
│   ├── pers_files/    # Директория для сохранения HTML-страниц
│   └── personal_links # Файл со списком ссылок на профили
└── output.json        # Результирующий файл с данными (создается после выполнения)

Установка и настройка

  1. Убедитесь, что у вас установлен Python 3.7+
  2. Установите необходимые зависимости:
pip install beautifulsoup4 requests selenium pyautogui
  1. Для использования Selenium-скрипта установите ChromeDriver:
    • Скачайте версию ChromeDriver, совместимую с вашей версией Chrome
    • Добавьте путь к ChromeDriver в PATH или укажите путь явно в коде

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

Основной способ (рекомендуемый)

  1. Сначала соберите ссылки на профили сенаторов:
python save_links.py
  1. Затем запустите основной парсер:
python main.py

Альтернативный способ (с использованием Selenium)

Если основной парсер не работает из-за защиты сайта:

python main_sel.py

Описание файлов

config.py

Содержит базовые URL-адреса:

  • lend_link - главная страница со списком сенаторов
  • base_link - базовый URL сайта

senator.py

Определяет класс Senator с атрибутами:

  • Личная информация (ФИО, дата рождения, регион)
  • Служебная информация (должность, даты начала/окончания полномочий)
  • Контактная информация (телефон, адрес, соцсети)
  • Биографические данные (образование, награды, ученые степени)

scraper.py

Основной класс для парсинга, содержащий методы:

  • parse_people_link() - сбор ссылок на профили
  • parse_one_person() - парсинг данных одного сенатора
  • Методы для извлечения конкретных данных (ФИО, региона, контактов и т.д.)

scrap.py

Базовый класс скрапера с общими методами.

Выходные данные

После выполнения скрипта создается файл output.json со структурированными данными о всех сенаторах в формате:

{
  "id_сенатора": {
    "f": "Фамилия",
    "i": "Имя",
    "o": "Отчество",
    "region": "Регион",
    "birth_date": "дата-рождения",
    "start_date": "дата-начала-полномочий",
    "end_date": "дата-окончания-полномочий",
    "post": "Должность",
    "social_networks": [...],
    "telephone": "телефон",
    "address": "адрес",
    "education": [...],
    "rewards": [...],
    "academic_degrees": [...],
    "previous_post": [...]
  }
}

Особенности

  • Проект использует BeautifulSoup для парсинга HTML
  • Реализована обработка различных форматов данных
  • Поддержка обхода анти-скрапинг защит через Selenium
  • Сохранение промежуточных данных (HTML-страниц) для отладки
  • Корректная обработка кириллических символов

Важные заметки

  • Перед использованием убедитесь, что парсинг разрешен правилами сайта
  • Проект предназначен для образовательных целей
  • Данные обновляются в соответствии с официальной информацией на сайте Совета Федерации

About

parser that uses Selenium, to scrap data from Russian Council

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages