mirror of
https://github.com/R0m1k3/Priceflow.git
synced 2026-10-15 19:27:17 +02:00
Complete refactoring of the search module for robustness and reliability: **New Architecture:** - Modular parser system with specialized parsers for each major site - Factory pattern for automatic parser selection - Generic fallback parser for sites without specific implementation **Specialized Parsers:** - ✅ Amazon.fr - Robust parser with multiple fallback selectors - Handles sponsored products, Prime eligibility, ratings, reviews - Based on proven amazon_scraper_v2.py implementation - ✅ Cdiscount.com - Optimized for Cdiscount's HTML structure - ✅ Fnac.com - Handles Fnac's picture elements and article structure - ✅ Darty.com - Specialized for electronics retailer - ✅ Boulanger.com - Optimized for Boulanger's product cards **Key Features:** - Multiple fallback selectors for each element (title, price, image) - Proper price parsing for French format (1 234,56 €) - Rating and review count extraction - Stock status detection - Image URL extraction with multiple attribute fallbacks - Query filtering to ensure relevant results **Benefits:** - Much more robust than previous generic parsing - Easier to maintain (one parser per site) - Easily extensible (add new parser for new site) - Better error handling and logging - Higher success rate for product extraction **Updated Services:** - improved_search_service.py now uses ParserFactory - Legacy _parse_results marked as deprecated - Conversion layer between ProductResult and SearchResult This implements the Amazon France model across all major sites for consistent, reliable product search results.
26 lines
688 B
Python
26 lines
688 B
Python
"""
|
|
Site-Specific Parsers for Robust Product Search
|
|
Each parser implements specialized logic for extracting search results and product details
|
|
"""
|
|
|
|
from .base_parser import BaseParser, ProductResult
|
|
from .parser_factory import ParserFactory
|
|
from .amazon_parser import AmazonParser
|
|
from .cdiscount_parser import CdiscountParser
|
|
from .fnac_parser import FnacParser
|
|
from .darty_parser import DartyParser
|
|
from .boulanger_parser import BoulangerParser
|
|
from .generic_parser import GenericParser
|
|
|
|
__all__ = [
|
|
"BaseParser",
|
|
"ProductResult",
|
|
"ParserFactory",
|
|
"AmazonParser",
|
|
"CdiscountParser",
|
|
"FnacParser",
|
|
"DartyParser",
|
|
"BoulangerParser",
|
|
"GenericParser",
|
|
]
|