antijob / neuro-parser

Other
3 stars 0 forks source link

Расширение парсеров #192

Open SahDoum opened 3 months ago

SahDoum commented 3 months ago

Как устроено сейчас

В server/core/article_parser/article_parser.py ресолвится подходящий парсер из подпапки parsers Там есть несколько парсеров для соцсетей + базовый парсер, запускающий goose3. Последний в первую очередь старается вычленить из страницы схемы для статей и новостей.

Аналогично устроен server/core/article_parser/source_parser.py за исключением того, что он еще парсит rss-источники.

Когда надо заводить новый парсер

Как создать новый парсер

Создаешь парсер. Интерфейс у него прописан в server/core/article_parser/parsers/base_parser.py Рядом кладешь свой парсер, унаследованный от базового Добавляешь его в список к server/core/article_parser/article_parser.py

Аналогично и для source-парсеров.

В интерфейсе надо реализовать два метода

def can_handle(cls, url: str) -> bool Определяет, будет ли парсить этот урл

def parse_raw_data(cls, data) -> ArticleData Парсинг сырого ответа из фетчера