Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Асинхронный парсер и лингвистический экстрактор Lenta.ru: собирает статьи, ищет предложения по слову (с учётом лемм) и сохраняет в DOCX.

Notifications You must be signed in to change notification settings

jestenough/lenta-ru-extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📰 Lenta Extractor

Lenta Extractor — утилита для асинхронного поиска и анализа публикаций с Lenta.ru. Она позволяет собрать статьи по заданному запросу, извлечь предложения, содержащие нужное слово, и сохранить результат в Word (.docx) с активными ссылками и контекстом предложений.


Назначение

Инструмент используется для:

  • корпусной лингвистики — исследование контекста употребления слов;
  • медиааналитики — анализ тональности и нарративов;
  • журналистских и исследовательских проектов — тематический сбор публикаций.

Как устроено

Работа делится на два шага:

Этап Команда Что делает
1. Search lenta-cli search выполняет запрос к API Lenta.ru и сохраняет ссылки на найденные статьи
2. Extract lenta-cli extract загружает статьи, находит в них целевое слово и формирует .docx с контекстом

Результирующий документ выглядит так:

01.09.2024 — Название статьи (кликабельная ссылка)
(без заголовка)
n-предложений перед. <жирное совпадение> n-предложений после.

Стоит уточнить, что предложения берутся в рамках абзаца, т.е. если указано 5 предложений от искомого слова. А оно находится в самом начале предложения, то они не будут выводиться, так как не относятся к абзацу (чтобы сохранилась) суть.


Архитектура проекта

src/lenta_extractor/
├── cli.py          # CLI-интерфейс (argparse)
├── search.py       # Асинхронный поиск по API lenta.ru
├── extract.py      # Извлечение и генерация .docx
├── parsing.py      # Парсинг HTML, нормализация текста
├── writer.py       # Работа с python-docx
├── config.py       # Константы и параметры
├── http_client.py  # Асинхронный HTTP-клиент (aiohttp)
tests/              # Тесты

Быстрый старт

1. Установка

git clone https://github.com/username/lenta-extractor
cd lenta-extractor
pip install -e .

Требуемые зависимости:

  • Python ≥ 3.13
  • aiohttp
  • python-docx
  • razdel

2. Поиск ссылок

lenta-cli search --query "деревня" --date-from 2024-01-01 --date-to 2025-10-09 --out links.txt

3. Извлечение контекста

lenta-cli extract --links links.txt --word "деревня" --exclude "деревенск" --pre 1 --post 1 --out lenta_sentences.docx

Файл lenta_sentences.docx появится в текущей директории.


Аргументы CLI

search

Аргумент Тип По умолчанию Описание
--query str поисковый запрос
--date-from str начальная дата (YYYY-MM-DD)
--date-to str конечная дата (YYYY-MM-DD)
--size int 50 размер страницы API
--concurrency int 10 параллельные запросы
--out path lenta_links.txt файл для сохранения ссылок

extract

Аргумент Тип По умолчанию Описание
--links path путь к файлу со ссылками
--word str целевое слово
--exclude regex "" исключения (например деревенск)
--out path lenta_sentences.docx выходной документ
--pre int 1 предложений до совпадения
--post int 1 предложений после совпадения
--amp / --no-amp bool True использовать AMP версии страниц
--concurrency int 6 параллельная загрузка статей
--timeout int 25 таймаут HTTP-запроса (сек.)

Примеры

Собрать корпус по слову "Россия":

lenta-cli search --query "Россия" --date-from 2024-01-01 --date-to 2025-01-01 --out links.txt
lenta-cli extract --links links.txt --word "Россия" --out corpus.docx

Только одно предложение после совпадения:

lenta-cli extract --links links.txt --word "деревня" --pre 0 --post 1 --out result.docx

Тесты

pip install pytest
pytest -q

Лицензия

MIT License — свободно для использования и модификации.

About

Асинхронный парсер и лингвистический экстрактор Lenta.ru: собирает статьи, ищет предложения по слову (с учётом лемм) и сохраняет в DOCX.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages