Этот проект предназначен для сбора и структурирования информации о членах Совета Федерации Федерального Собрания Российской Федерации с официального сайта.
├── 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 # Результирующий файл с данными (создается после выполнения)
- Убедитесь, что у вас установлен Python 3.7+
- Установите необходимые зависимости:
pip install beautifulsoup4 requests selenium pyautogui- Для использования Selenium-скрипта установите ChromeDriver:
- Скачайте версию ChromeDriver, совместимую с вашей версией Chrome
- Добавьте путь к ChromeDriver в PATH или укажите путь явно в коде
- Сначала соберите ссылки на профили сенаторов:
python save_links.py- Затем запустите основной парсер:
python main.pyЕсли основной парсер не работает из-за защиты сайта:
python main_sel.pyСодержит базовые URL-адреса:
lend_link- главная страница со списком сенаторовbase_link- базовый URL сайта
Определяет класс Senator с атрибутами:
- Личная информация (ФИО, дата рождения, регион)
- Служебная информация (должность, даты начала/окончания полномочий)
- Контактная информация (телефон, адрес, соцсети)
- Биографические данные (образование, награды, ученые степени)
Основной класс для парсинга, содержащий методы:
parse_people_link()- сбор ссылок на профилиparse_one_person()- парсинг данных одного сенатора- Методы для извлечения конкретных данных (ФИО, региона, контактов и т.д.)
Базовый класс скрапера с общими методами.
После выполнения скрипта создается файл 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-страниц) для отладки
- Корректная обработка кириллических символов
- Перед использованием убедитесь, что парсинг разрешен правилами сайта
- Проект предназначен для образовательных целей
- Данные обновляются в соответствии с официальной информацией на сайте Совета Федерации