{"id":21201790,"url":"https://github.com/gauff/belgianelectriccarmarketanalyser","last_synced_at":"2026-04-30T16:32:03.654Z","repository":{"id":262109617,"uuid":"886240824","full_name":"Gauff/BelgianElectricCarMarketAnalyser","owner":"Gauff","description":"Python tool for analyzing the belgian second hand electric car market by scraping and visualizing data from multiple car listing websites. Features parallel web scraping, price tracking, and interactive dashboards.","archived":false,"fork":false,"pushed_at":"2024-11-10T15:48:58.000Z","size":1193,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T14:47:46.658Z","etag":null,"topics":["automotive","beautifulsoup4","car-market","dash","data-analysis-python","data-cleaning","data-visualization","electric-vehicles","market-analysis","pandas","parallel-processing","plotly","price-comparison","price-monitoring","selenium","web-scraping-python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gauff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-10T15:09:06.000Z","updated_at":"2025-01-04T00:32:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"4efe5b46-26a8-44ee-ae3a-32fa454a5712","html_url":"https://github.com/Gauff/BelgianElectricCarMarketAnalyser","commit_stats":null,"previous_names":["gauff/belgianelectriccarmarketanalyser"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauff%2FBelgianElectricCarMarketAnalyser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauff%2FBelgianElectricCarMarketAnalyser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauff%2FBelgianElectricCarMarketAnalyser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gauff%2FBelgianElectricCarMarketAnalyser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gauff","download_url":"https://codeload.github.com/Gauff/BelgianElectricCarMarketAnalyser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243654465,"owners_count":20325908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automotive","beautifulsoup4","car-market","dash","data-analysis-python","data-cleaning","data-visualization","electric-vehicles","market-analysis","pandas","parallel-processing","plotly","price-comparison","price-monitoring","selenium","web-scraping-python"],"created_at":"2024-11-20T20:11:08.962Z","updated_at":"2026-04-30T16:32:03.624Z","avatar_url":"https://github.com/Gauff.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Electric Car Market Analyzer\n\n[![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive Python application for analyzing the Belgian second-hand electric car market by scraping, processing, and visualizing data from multiple car listing websites.\n\n## Table of Contents\n\n- [Project Description](#project-description)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Installation \u0026 Setup](#installation--setup)\n- [Usage](#usage)\n- [Project Structure](#project-structure)\n- [Configuration](#configuration)\n- [Troubleshooting](#troubleshooting)\n- [Development Setup](#development-setup)\n- [Contributing](#contributing)\n- [License](#license)\n- [Contact/Support](#contactsupport)\n\n## Project Description\n\nThe Electric Car Market Analyzer is designed to provide comprehensive insights into the Belgian electric vehicle market by collecting and analyzing data from major car listing platforms. This tool helps potential buyers, market researchers, and automotive enthusiasts make informed decisions by providing:\n\n- **Real-time market data** from multiple sources\n- **Price trend analysis** and drop detection\n- **Interactive visualizations** for market exploration\n- **Data-driven insights** into electric vehicle pricing and availability\n\n### Target Audience\n\n- **Car buyers** looking for the best deals on electric vehicles\n- **Market researchers** studying automotive trends\n- **Automotive dealers** monitoring competitor pricing\n- **Data analysts** interested in market dynamics\n\n### Key Benefits\n\n- Save time by aggregating data from multiple platforms\n- Identify price drops and market opportunities\n- Understand market trends through comprehensive analytics\n- Make data-driven purchasing decisions\n\n## Features\n\n### Core Functionality\n- **Multi-source web scraping** from major Belgian car platforms:\n  - **Gocar** - Premium car listings platform\n  - **AutoScout24** - European automotive marketplace\n  - **2ememain** - Belgian classified ads platform\n\n- **Advanced data processing**:\n  - Data cleaning and normalization\n  - Electric vehicle identification and filtering\n  - Price range filtering (€500 - €300,000)\n  - Duplicate detection and removal\n\n- **Price drop detection**:\n  - Automatic comparison between scraping sessions\n  - Identification of vehicles with reduced prices\n  - Historical price tracking\n\n- **Interactive web dashboard**:\n  - Real-time data visualization using Plotly and Dash\n  - Price range filtering with interactive sliders\n  - Detailed vehicle information on hover\n  - Visit advertisement on click\n  - Refresh functionality for live updates\n\n- **Comprehensive logging**:\n  - Detailed operation logs for debugging\n  - Separate log files for each module\n  - Console and file output\n\n- **Data export and visualization**:\n  - Multiple chart types (box plots, scatter plots)\n  - SweetViz integration for automated data profiling\n  - Export capabilities for further analysis\n\n![Screenshot](https://github.com/Gauff/BelgianElectricCarMarketAnalyser/blob/main/screenshots/03.png)\n\n## Prerequisites\n\n### System Requirements\n- **Python 3.9 or higher** (as specified in pyproject.toml)\n- **UV package manager** (recommended) or pip as fallback\n- **Operating System**: Windows, macOS, or Linux\n- **Memory**: Minimum 4GB RAM (8GB recommended for large datasets)\n- **Storage**: At least 1GB free space for data and logs\n\n### Required Accounts/API Access\n- **Gocar Bearer Token**: Required for accessing Gocar API\n  - Browse to Gocar web site and get it from browser developer tools\n  - Token should be added to your `.env` file\n\n### Network Requirements\n- Stable internet connection for web scraping\n- Access to target websites (some may have regional restrictions)\n\n## Installation \u0026 Setup\n\n### Step 1: Clone the Repository\n\n```bash\ngit clone https://github.com/Gauff/BelgianElectricCarMarketAnalyser.git\ncd electricCarMarketAnalyser\n```\n\n### Step 2: Install UV Package Manager (Recommended)\n\nUV is a fast Python package manager that's 10-100x faster than pip:\n\n```bash\n# Install UV\npip install uv\n```\n\nOr follow the official installation guide: https://github.com/astral-sh/uv\n\n### Step 3: Install Dependencies\n\n**Using UV (recommended):**\n```bash\nuv pip install -r src/requirements.txt\n```\n\n**Using pip (fallback):**\n```bash\n# Create virtual environment first\npython -m venv venv\n# Activate virtual environment\nsource venv/bin/activate  # macOS/Linux\n# or\nvenv\\Scripts\\activate     # Windows\n# Install dependencies\npip install -r src/requirements.txt\n```\n\n**Required packages include:**\n- `beautifulsoup4\u003e=4.12.0` - HTML parsing for web scraping\n- `botasaurus` - Web automation framework\n- `dash\u003e=2.14.0` - Web application framework\n- `matplotlib\u003e=3.8.0` - Plotting library\n- `numpy\u003e=1.24.0` - Numerical computing\n- `pandas\u003e=2.1.0` - Data manipulation and analysis\n- `plotly\u003e=5.18.0` - Interactive plotting\n- `requests\u003e=2.31.0` - HTTP library\n- `python-dotenv\u003e=1.0.0` - Environment variable management\n\n### Step 4: Environment Configuration\n\n1. **Copy the environment template:**\n   ```bash\n   cp src/.env.example src/.env\n   ```\n\n2. **Edit the `.env` file** and add your API credentials:\n   ```env\n   GOCAR_BEARER_TOKEN=your_actual_token_here\n   ```\n\n3. **Obtain Gocar Bearer Token:**\n   - Visit the Gocar developer portal or contact their support\n   - Follow their authentication process\n   - Add the token to your `.env` file\n\n### Step 5: Verify Installation\n\nRun the example script to test your setup:\n```bash\npython run_gocar_example.py\n```\n\nIf successful, you should see output similar to:\n```\nCurrent working directory: /path/to/electricCarMarketAnalyser\nRunning gocar script...\nSuccessfully retrieved X cars from Gocar\nSuccessfully loaded X cars from last file\n```\n\n## Usage\n\n### Basic Usage\n\n**Run the complete analysis pipeline:**\n```bash\npython src/main.py\n```\n\nThis command will:\n1. Scrape data from all configured sources (Gocar, AutoScout24, 2ememain)\n2. Clean and process the data\n3. Detect price drops from previous runs\n4. Launch the interactive web dashboard\n5. Automatically open your browser to `http://127.0.0.1:8050/`\n\n### Web Dashboard Features\n\nOnce the application is running, you can:\n\n- **View interactive scatter plots** of car prices vs. registration years\n- **Filter by price range** using the interactive slider\n- **Hover over data points** to see detailed car information\n- **Click the \"Refresh Data\" button** to update with latest scraped data\n- **Explore different car models** and their price distributions\n\n### Command Line Options\n\nThe application supports different execution modes:\n\n**Scrape data only (without launching dashboard):**\n```python\nfrom src.main import scrap_ads\nscrap_ads()\n```\n\n**Launch dashboard with existing data:**\n```python\nfrom src.main import run_server\nrun_server()\n```\n\n### Data Access\n\n**Scraped data is stored in:**\n- `results/` - Processed datasets (pickle format)\n- `results/gocar/` - Raw Gocar data (JSON)\n- `results/autoscout24/` - Raw AutoScout24 data (JSON)\n- `results/2ememain/` - Raw 2ememain data (JSON)\n\n**Logs are available in:**\n- `logs/` - Application logs for debugging and monitoring\n\n## Project Structure\n\n```\nelectricCarMarketAnalyser/\n│\n├── src/                          # Source code directory\n│   ├── sites/                    # Website-specific scrapers\n│   │   ├── autoscout24/         # AutoScout24 scraping module\n│   │   ├── deuxieme_main/       # 2ememain scraping module\n│   │   └── gocar/               # Gocar API integration\n│   │       ├── gocar.py         # Main Gocar scraper\n│   │       ├── gocar_data.py    # Data models\n│   │       └── gocar_electric_car_search.json\n│   ├── data/                    # Data models and utilities\n│   │   ├── electric_car_data.py # ElectricCar class definition\n│   │   ├── electric_car_models.py # Car model identification\n│   │   └── dataframes.py        # DataFrame utilities\n│   ├── config.py                # Configuration and paths\n│   ├── data_cleaning.py         # Data cleaning utilities\n│   ├── data_preparation.py      # Data processing pipeline\n│   ├── file_management.py       # File I/O operations\n│   ├── graph_utils.py           # Graph generation utilities\n│   ├── logging_config.py        # Logging configuration\n│   ├── main.py                  # Main application entry point\n│   ├── requirements.txt         # Python dependencies\n│   ├── utilities.py             # General utility functions\n│   ├── visualization.py         # Data visualization\n│   ├── .env.example            # Environment variables template\n│   └── .env                    # Environment variables (create this)\n│\n├── results/                     # Generated data files\n│   ├── autoscout24/            # AutoScout24 raw data\n│   ├── gocar/                  # Gocar raw data\n│   ├── 2ememain/               # 2ememain raw data\n│   └── YYYYMMDDHHMMSS_df.pkl   # Processed datasets\n│\n├── logs/                       # Application logs\n│   ├── __main__.log           # Main application logs\n│   ├── data_preparation.log   # Data processing logs\n│   ├── autoscout24.log        # AutoScout24 scraper logs\n│   └── deuxieme_main.log      # 2ememain scraper logs\n│\n├── visualizations/            # Generated plots and charts\n├── screenshots/               # Application screenshots\n├── build/                     # Build artifacts\n├── run_gocar_example.py      # Example script for testing\n├── README.md                 # This file\n├── .gitignore               # Git ignore rules\n└── .gitattributes           # Git attributes\n```\n\n### Key Components\n\n**Core Modules:**\n- `main.py` - Application entry point and Dash web server\n- `data_preparation.py` - Data scraping and processing pipeline\n- `config.py` - Centralized configuration management\n\n**Scraping Modules:**\n- `sites/gocar/` - Gocar API integration with bearer token authentication\n- `sites/autoscout24/` - AutoScout24 web scraping\n- `sites/deuxieme_main/` - 2ememain classified ads scraping\n\n**Data Processing:**\n- `data_cleaning.py` - Filters out non-electric vehicles\n- `electric_car_models.py` - Electric vehicle identification\n- `dataframes.py` - Price drop detection and analysis\n\n**Utilities:**\n- `file_management.py` - File operations with timestamp management\n- `logging_config.py` - Centralized logging setup\n- `visualization.py` - Chart generation and data visualization\n\n## Configuration\n\n### Environment Variables\n\nThe application uses environment variables for sensitive configuration. Create a `.env` file in the `src/` directory:\n\n```env\n# Gocar API Configuration\nGOCAR_BEARER_TOKEN=your_gocar_bearer_token_here\n```\n\n### Application Settings\n\nThe `src/config.py` file manages paths and directories:\n\n```python\n# Automatically created directories\nRESULTS_DIR = 'results/'           # Scraped data storage\nVISUALIZATIONS_DIR = 'visualizations/'  # Generated charts\nLOGS_DIR = 'logs/'                # Application logs\n\n# Site-specific data directories\nAUTOSCOUT24_RESULTS = 'results/autoscout24/'\nDEUXIEMEMAIN_RESULTS = 'results/2ememain/'\nGOCAR_RESULTS = 'results/gocar/'\n```\n\n### Scraping Configuration\n\n**Price Filtering:**\n- Default range: €500 - €300,000\n- Configurable in `data_preparation.py`\n\n**Data Sources:**\n- All three sources are scraped in parallel for efficiency\n- Individual sources can be disabled by modifying `data_preparation.py`\n\n**Update Frequency:**\n- Manual execution by default\n- Can be automated using cron jobs or task schedulers\n\n### Web Dashboard Configuration\n\n**Server Settings:**\n- Default port: 8050\n- Debug mode: Enabled (disable for production)\n- Auto-reload: Disabled to prevent conflicts\n\n**Display Options:**\n- Default price range: €2,000 - €20,000\n- Interactive filtering available\n- Real-time updates via refresh button\n\n## Troubleshooting\n\n### Common Issues\n\n#### 1. Missing Gocar Bearer Token\n**Error:** `ValueError: GOCAR_BEARER_TOKEN not found in environment variables`\n\n**Solution:**\n1. Ensure you have created the `.env` file in the `src/` directory\n2. Verify the token is correctly added: `GOCAR_BEARER_TOKEN=your_token_here`\n3. Check that there are no extra spaces or quotes around the token\n\n#### 2. Import Errors\n**Error:** `ModuleNotFoundError: No module named 'dash'`\n\n**Solution:**\n1. Install dependencies using UV: `uv pip install -r src/requirements.txt`\n2. Or use pip with virtual environment: `pip install -r src/requirements.txt`\n3. Verify Python version compatibility (3.9+)\n\n#### 3. Web Dashboard Not Loading\n**Error:** Dashboard doesn't open or shows connection errors\n\n**Solution:**\n1. Check if port 8050 is already in use\n2. Verify firewall settings allow local connections\n3. Try accessing manually: `http://127.0.0.1:8050/`\n4. Check console logs for error messages\n\n#### 4. No Data Displayed\n**Error:** Empty charts or \"No data available\" messages\n\n**Solution:**\n1. Verify internet connection for web scraping\n2. Check if scraping sources are accessible\n3. Review logs in `logs/` directory for scraping errors\n4. Ensure Gocar token is valid and not expired\n\n#### 5. Permission Errors\n**Error:** `PermissionError: [Errno 13] Permission denied`\n\n**Solution:**\n1. Ensure write permissions for `results/`, `logs/`, and `visualizations/` directories\n2. Run with appropriate user permissions\n3. Check disk space availability\n\n### Debug Mode\n\nEnable detailed logging by modifying `src/logging_config.py`:\n\n```python\nlogger.setLevel(logging.DEBUG)  # Change from INFO to DEBUG\n```\n\n### Performance Issues\n\n**Slow scraping:**\n- Reduce the number of pages scraped per source\n- Implement delays between requests to avoid rate limiting\n- Check network connectivity and speed\n\n**High memory usage:**\n- Process data in smaller chunks\n- Clear unused DataFrames after processing\n- Monitor system resources during execution\n\n### FAQ\n\n**Q: How often should I run the scraper?**\nA: Daily runs are recommended for price drop detection. More frequent runs may trigger rate limiting.\n\n**Q: Can I add more car listing websites?**\nA: Yes, create a new module in `src/sites/` following the existing patterns.\n\n**Q: How do I export data for external analysis?**\nA: Processed data is stored as pickle files in `results/`. Use pandas to load and export to CSV/Excel.\n\n**Q: Is the application suitable for production use?**\nA: The current version is designed for research and personal use. For production, implement proper error handling, rate limiting, and monitoring.\n\n## Development Setup\n\nThis section covers the development environment setup for contributors and developers working on the Electric Car Market Analyzer project.\n\n### 🛠️ Development Tools\n\nThe project uses modern Python development tools for code quality, formatting, and type checking:\n\n- **[Black](https://black.readthedocs.io/)** - Code formatter for consistent styling\n- **[Ruff](https://docs.astral.sh/ruff/)** - Fast Python linter and formatter (replaces flake8, isort, etc.)\n- **[MyPy](https://mypy.readthedocs.io/)** - Static type checker\n- **[Pydantic v2](https://docs.pydantic.dev/)** - Data validation library\n- **[UV](https://github.com/astral-sh/uv)** - Fast Python package manager\n\n### 🚀 Quick Development Setup\n\n#### 1. Install Development Dependencies\n\nUsing UV (recommended - 10-100x faster than pip):\n```bash\nuv pip install -r requirements-dev.txt\n```\n\nOr using pip:\n```bash\npip install -r requirements-dev.txt\n```\n\n#### 2. Automated Setup\n\nRun the unified development script to install everything automatically:\n```bash\npython development.py setup\n```\n\nThis will:\n- Install all development dependencies using UV (or pip as fallback)\n- Validate that all tools are properly installed\n- Create VS Code settings for optimal development experience\n\n### 🔧 Development Commands\n\nUse the consolidated `development.py` script for all development operations:\n\n```bash\n# Set up development environment\npython development.py setup\n\n# Format code with Black\npython development.py format\n\n# Lint code with Ruff\npython development.py lint\n\n# Type check with MyPy\npython development.py type-check\n\n# Auto-fix formatting and linting issues\npython development.py fix\n\n# Run all tools\npython development.py all\n```\n\n### ⚙️ Tool Configuration\n\nAll development tools are configured in `pyproject.toml`:\n\n**Black Configuration:**\n- Line length: 88 characters\n- Target Python versions: 3.9+\n- Excludes: logs, results, screenshots, visualizations\n\n**Ruff Configuration:**\n- Replaces: flake8, isort, pyupgrade, and more\n- Enabled rules: pycodestyle, Pyflakes, isort, bugbear, comprehensions, pyupgrade, naming, security, simplify\n- Import sorting with known first-party modules\n\n**MyPy Configuration:**\n- Target Python version: 3.9\n- Lenient settings for gradual adoption\n- Ignores missing imports for external libraries\n\n### 🎯 VS Code Integration\n\nThe setup script automatically creates `.vscode/settings.json` with optimal settings:\n\n- Black as the default formatter\n- Format on save enabled\n- Ruff linting enabled\n- MyPy type checking enabled\n- Automatic import organization\n\n### 📈 Development Workflow\n\n**Before Committing:**\n```bash\n# Run all tools to ensure code quality\npython development.py all\n```\n\n**During Development:**\n```bash\n# Auto-fix issues as you work\npython development.py fix\n```\n\n**For CI/CD Pipelines:**\n```yaml\n# Example GitHub Actions step\n- name: Check code quality\n  run: |\n    uv pip install -r requirements-dev.txt\n    python development.py all\n```\n\n### 🐛 Development Troubleshooting\n\n**UV Not Found:**\n```bash\n# Install UV\npip install uv\n# Or follow instructions at: https://github.com/astral-sh/uv\n```\n\n**Tools Not Found:**\n- Use the `development.py` script which uses UV to run tools\n- Or install tools globally: `pip install black ruff mypy`\n\n**MyPy Module Errors:**\n- Run MyPy from the project root directory\n- Ensure `src/` is in your Python path\n- Use the provided scripts which handle paths correctly\n\n### 📊 Code Quality Standards\n\nThe development tools help maintain high code quality:\n\n**Black:** Automatically formats code for consistency\n**Ruff:** Provides import sorting, code style enforcement, bug detection, security checks, and performance suggestions\n**MyPy:** Catches type-related errors and provides better IDE integration\n\n### 📁 Development Files\n\nKey development-related files in the project:\n\n```\nelectric-car-market-analyser/\n├── src/                          # Main source code\n│   ├── data/                     # Data models and processing\n│   ├── sites/                    # Web scraping modules\n│   └── requirements.txt          # Production dependencies\n├── development.py               # Unified development tools script\n├── requirements-dev.txt         # Development dependencies\n├── pyproject.toml              # Tool configuration (Python 3.9+)\n├── uv.lock                     # UV dependency lock file\n└── .vscode/settings.json       # VS Code integration (auto-generated)\n```\n\n## Contributing\n\nWe welcome contributions to improve the Electric Car Market Analyzer! Here's how you can help:\n\n### Getting Started\n\n1. **Fork the repository** on GitHub\n2. **Clone your fork:**\n   ```bash\n   git clone https://github.com/your-username/BelgianElectricCarMarketAnalyser.git\n   cd electricCarMarketAnalyser\n   ```\n3. **Create a development branch:**\n   ```bash\n   git checkout -b feature/your-feature-name\n   ```\n4. **Set up development environment:**\n   ```bash\n   # Install UV package manager (if not already installed)\n   pip install uv\n\n   # Install production dependencies\n   uv pip install -r src/requirements.txt\n\n   # Set up development tools\n   python development.py setup\n   ```\n\nSee the [Development Setup](#development-setup) section above for detailed information about development tools and workflow.\n\n### Contribution Guidelines\n\n**Code Quality:**\n- Run `python development.py all` before committing to ensure code quality\n- Use `python development.py fix` to auto-fix formatting and linting issues\n- Follow the automated code style enforced by Black and Ruff\n- Add type hints where appropriate (checked by MyPy)\n\n**Development Workflow:**\n- Use the development tools provided: `python development.py setup`\n- Format code automatically: `python development.py format`\n- Check for issues: `python development.py lint`\n- Ensure type safety: `python development.py type-check`\n\n**Testing:**\n- Test your changes thoroughly\n- Ensure existing functionality isn't broken\n- Add unit tests for new features\n- Run the full development tool suite before submitting\n\n**Documentation:**\n- Update README.md for new features\n- Add inline comments for complex logic\n- Update docstrings as needed\n\n### Types of Contributions\n\n**Bug Reports:**\n- Use GitHub Issues to report bugs\n- Include error messages, logs, and steps to reproduce\n- Specify your operating system and Python version\n\n**Feature Requests:**\n- Describe the proposed feature and its benefits\n- Explain the use case and expected behavior\n- Consider implementation complexity\n\n**Code Contributions:**\n- New scraping sources\n- Data analysis features\n- Visualization improvements\n- Performance optimizations\n- Bug fixes\n\n### Pull Request Process\n\n1. **Ensure your code follows the style guidelines**\n2. **Update documentation** as needed\n3. **Test your changes** thoroughly\n4. **Create a pull request** with:\n   - Clear description of changes\n   - Reference to related issues\n   - Screenshots for UI changes\n\n## License\n\nThis project is licensed under the MIT License - see the details below:\n\n```\nMIT License\n\nCopyright (c) 2024 Electric Car Market Analyzer Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n### Third-Party Licenses\n\nThis project uses several open-source libraries, each with their own licenses:\n- **Dash** - MIT License\n- **Plotly** - MIT License\n- **Pandas** - BSD 3-Clause License\n- **BeautifulSoup** - MIT License\n- **Requests** - Apache 2.0 License\n\n## Contact/Support\n\n### Getting Help\n\n**GitHub Issues:** [Report bugs or request features](https://github.com/Gauff/BelgianElectricCarMarketAnalyser/issues)\n\n**Documentation:** This README contains comprehensive setup and usage instructions\n\n**Community:** Check existing issues and discussions for similar problems\n\n### Support Guidelines\n\nWhen seeking support:\n\n1. **Search existing issues** first\n2. **Provide detailed information:**\n   - Operating system and Python version\n   - Complete error messages\n   - Steps to reproduce the issue\n   - Relevant log files from `logs/` directory\n\n3. **Include context:**\n   - What you were trying to accomplish\n   - What you expected to happen\n   - What actually happened\n\n### Maintainers\n\nThis project is maintained by the community. Active contributors help review issues and pull requests.\n\n### Disclaimer\n\nThis tool is for educational and research purposes. Users are responsible for:\n- Complying with website terms of service\n- Respecting rate limits and robots.txt files\n- Using scraped data ethically and legally\n- Obtaining necessary permissions for commercial use\n\n---\n\n**Happy analyzing! 🚗⚡📊**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauff%2Fbelgianelectriccarmarketanalyser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgauff%2Fbelgianelectriccarmarketanalyser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgauff%2Fbelgianelectriccarmarketanalyser/lists"}