Skip to content

Это гибкий парсер новостных сайтов на Python, который работает на основе XPath-выражений, хранящихся в базе данных. Позволяет легко подключать новые сайты без изменения кода, просто обновив таблицу resource.

Notifications You must be signed in to change notification settings

GvozdevMaxim/Universal-site-parser

Repository files navigation

Universal News Parser

Universal News Parser — это гибкий парсер новостных сайтов на Python, который работает на основе XPath-выражений, хранящихся в базе данных. Позволяет легко подключать новые сайты без изменения кода, просто обновив таблицу resource.

Возможности

Парсинг новостей с любых сайтов через XPath

Получение: ссылки, заголовка, текста статьи, даты публикации

Преобразование относительных ссылок в абсолютные

Хранение данных в MySQL (таблица items)

Простая настройка через таблицу resource

Docker-сборка: MySQL + Python

Технологии

Python 3.12

beautifulsoup4 4.12.3

lxml 5.2.1

fake-useragent 1.5.1

requests 2.32.2

mysql-connector-python 8.3.0

dateparser 1.2.0

tzlocal 5.2

MySQL 8.0

Docker 24.x

Docker Compose 2.x

Установка и запуск

Клонировать проект:

git clone https://github.com/your_username/universal-news-parser.git cd universal-news-parser

Создать файл .env на основе шаблона:

cp .env.example .env

Запустить проект:

docker-compose up --build

При первом запуске:

Поднимется MySQL с таблицами и данными

Парсер автоматически выполнит парсинг и выведет результат в консоль

Структура базы данных

Таблица resource:

resource_name — Название источника

resource_url — Ссылка на раздел с новостями

top_tag — XPath до ссылок на статьи

bottom_tag — XPath до содержимого статьи

title_cut — XPath до заголовка

date_cut — XPath до даты публикации

Таблица items:

res_id — ID источника (resource.id)

link — Абсолютная ссылка на новость

title — Заголовок новости

content — Текст статьи

nd_date — UNIX-время публикации

s_date — UNIX-время добавления

not_date — Дата публикации (человеко-читаемый формат)

Пример вывода парсера

1.SITE_ID = 1 2.LINK = https://www.nur.kz/society/123456 3.TITLE: Новый закон принят в Казахстане 4.CONTENT: Полный текст статьи... 5.DATETIME: 2024-10-17 6.UNIXTIME: 1729166500 7.ADDTIME: 1729167000

init.sql

Проект включает файл init.sql, который:

Создаёт таблицы resource и items

Вставляет демо-данные для сайта nur.kz

init.sql выполняется автоматически при первом запуске контейнера MySQL.

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

universal-news-parser/ ├── parser.py ├── database.py ├── utils.py ├── requirements.txt ├── Dockerfile ├── docker-compose.yml ├── init.sql ├── .env.example └── README.md

Автор

GitHub: @GvozdevMaxim

Лицензия

Проект распространяется под лицензией MIT. Разрешено использовать для портфолио, обучения и коммерческих целей.

About

Это гибкий парсер новостных сайтов на Python, который работает на основе XPath-выражений, хранящихся в базе данных. Позволяет легко подключать новые сайты без изменения кода, просто обновив таблицу resource.

Resources

Stars

Watchers

Forks

Packages

No packages published