Skip to content

feat: парсинг полного описания товара со страницы объявления (fixes #305) - #329

Open
eminsk wants to merge 1 commit into
Duff89:masterfrom
eminsk:feat/full-description-parsing
Open

eminsk wants to merge 1 commit into
Duff89:masterfrom
eminsk:feat/full-description-parsing

Conversation

@eminsk

@eminsk eminsk commented Sep 4, 2026

Copy link
Copy Markdown

Парсинг полного описания товара со страницы объявления (Fixes #305)

Устранена проблема сохранения обрезанного описания товара (ограниченного анонсом с кнопкой «Читать полностью»).

В чем была проблема (#305):

Поисковое API Avito (items?...) возвращает в каталоге только краткий текстовый анонс (1-2 предложения с многоточием). Из-за этого в Excel-файл попадала лишь малая часть описания, а ключевые характеристики и подробности товара терялись.

Что сделано:

  1. Метод извлечения полного описания _extract_description():
    • Извлекает полный текст из основного DOM-блока Avito [data-marker="item-description/text"].
    • Поддерживает резервное извлечение из микроразметки Schema.org [itemprop="description"].
    • Поддерживает парсинг из встроенного JSON-состояния страницы (loaderData.data.item.description).
    • Сохраняет форматирование абзацев (заменяет переносы строк и теги).
  2. Бесплатное обогащение при parse_views:
    • При включенной опции парсинга просмотров страница товара уже загружается — теперь из нее параллельно извлекается и сохраняется в ad.description полное описание без дополнительных HTTP-запросов.
  3. Отдельная опция parse_description:
    • Добавлен параметр parse_description в AvitoConfig и config.toml.
    • В графический интерфейс Flet добавлен чекбокс «Парсить описание полностью» для пользователей, которым нужно полное описание даже без парсинга просмотров.
  4. Тестирование (tests/test_description_parser.py):
    • 5 модульных тестов, проверяющих все сценарии извлечения (data-marker, schema.org, json, пустые страницы и интеграцию в пайплайн).
    • Все 5 тестов успешно проходят.

- Extract full item description from [data-marker='item-description/text'], Schema.org metadata, or embedded JSON state (fixes Duff89#305)
- Automatically enrich description during parse_views without requiring additional network requests
- Add parse_description option in AvitoConfig, config.toml, and Flet GUI checkbox for standalone description extraction
- Add comprehensive unit tests in tests/test_description_parser.py
@Duff89

Duff89 commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Спасибо за PR, протестирую в свободное время и волью если всё ок

@eminsk

eminsk commented Sep 8, 2026

Copy link
Copy Markdown
Author

Отлично, спасибо! Если возникнут какие-то вопросы или понадобятся правки — дай знать, оперативно подправлю.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG]: Ошибка парсинга описания

2 participants