mirror of
https://github.com/R0m1k3/Priceflow.git
synced 2026-10-23 15:18:12 +02:00
feat: Rebuild search system with modular, site-specific parsers
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.
This commit is contained in:
10 files changed
+1257
-5
No files matched your search
@@ -0,0 +1,25 @@
|
||||
"""
|
||||
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",
|
||||
]
|
||||
Reference in new issue
Block a user