#!/usr/bin/env python3 """ Basic Usage Example for Market Trends Scraper This script demonstrates how to use the Market Trends Scraper to collect and analyze pricing data from e-commerce websites. """ import sys from pathlib import Path # Add src directory to Python path sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "src")) from config_manager import ConfigManager from scraper import MarketTrendsScraper from logger import setup_logger def main(): """Main function demonstrating basic scraper usage.""" # Setup logging setup_logger(verbose=True) # Initialize configuration manager config_manager = ConfigManager("../config/sample_config.yaml") # Load configuration try: config = config_manager.load_config() print("āœ“ Configuration loaded successfully") except Exception as e: print(f"āœ— Failed to load configuration: {str(e)}") return 1 # Initialize scraper try: scraper = MarketTrendsScraper(config, headless=True) print("āœ“ Scraper initialized successfully") except Exception as e: print(f"āœ— Failed to initialize scraper: {str(e)}") return 1 try: # Scrape market trends data print("\nšŸ” Scraping market trends data...") data = scraper.scrape_market_trends() print(f"āœ“ Scraped {len(data)} product records") if not data: print("⚠ No data was scraped. Check your configuration and selectors.") return 0 # Save scraped data output_file = "../data/example_output.csv" scraper.save_data(data, output_file) print(f"āœ“ Data saved to {output_file}") # Analyze trends print("\nšŸ“Š Analyzing market trends...") analysis = scraper.analyze_trends(data) print("āœ“ Trend analysis completed") # Save analysis results analysis_file = "../data/example_analysis.json" scraper.save_analysis(analysis, analysis_file) print(f"āœ“ Analysis saved to {analysis_file}") # Print summary print("\nšŸ“‹ Summary:") print(f" - Total products: {analysis.get('total_products', 0)}") if 'price_analysis' in analysis: price_analysis = analysis['price_analysis'] print(f" - Average price: ${price_analysis.get('average_price', 0):.2f}") print(f" - Price range: ${price_analysis.get('min_price', 0):.2f} - ${price_analysis.get('max_price', 0):.2f}") if 'sources' in analysis: print(" - Products by source:") for source, count in analysis['sources'].items(): print(f" * {source}: {count} products") print("\nāœ… Market trends analysis completed successfully!") return 0 except Exception as e: print(f"āœ— Error during scraping: {str(e)}") return 1 finally: # Close scraper scraper.close() if __name__ == "__main__": sys.exit(main())