Skip to main content

A powerful Python package to automate image downloading from any webpage with robust error handling and detailed logging.

Project description

PyPI Downloads Publish Package

LP Images Downloader

A powerful Python package to effortlessly download all images from any webpage. Built with Selenium and modern Python practices, this tool automates image scraping with robust error handling and detailed logging.

✨ Features

  • Dynamic Content Handling: Automatically scrolls through pages to load dynamic images
  • Robust Error Handling: Comprehensive error catching and logging
  • URL Validation: Ensures all images are valid before downloading
  • Customizable Save Locations: Organizes downloaded images into folders based on page titles
  • Detailed Logging: Provides comprehensive logging of all operations
  • Type Safety: Full type hints for better code reliability
  • Resource Management: Proper cleanup of browser resources
  • Progress Tracking: Returns list of successfully downloaded files

📦 Installation

Install the package from PyPI using pip:

pip install LpImagesDownloader

Requirements

  • Python 3.7+
  • Chrome browser installed
  • Internet connection

🚀 Usage/Examples

Basic Usage

from LpImagesDownloader import download_images

# Download images from a webpage, scrolling 3 times to load dynamic content
downloaded_files = download_images("https://en.wikipedia.org/wiki/India", 3)
print(f"Successfully downloaded {len(downloaded_files)} images")

Advanced Usage with Error Handling

from LpImagesDownloader import download_images
import logging

# Configure logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)

try:
    # Download images with custom scroll count
    downloaded_files = download_images("https://example.com", 5)
    print(f"Successfully downloaded {len(downloaded_files)} images")
    
    # Process downloaded files
    for file_path in downloaded_files:
        print(f"Downloaded: {file_path}")
        
except Exception as e:
    logging.error(f"Failed to download images: {e}")

Sample Output

2024-03-14 10:30:15 - INFO - Setting up environment...
2024-03-14 10:30:16 - INFO - Loading URL: https://example.com
2024-03-14 10:30:17 - INFO - Running operations in the background...
2024-03-14 10:30:18 - INFO - Scrolling page 1...
2024-03-14 10:30:20 - INFO - Scrolling page 2...
2024-03-14 10:30:22 - INFO - Scrolling page 3...
2024-03-14 10:30:23 - INFO - Total detected images on page: 25
2024-03-14 10:30:24 - INFO - Downloading 1.jpg...
2024-03-14 10:30:25 - INFO - Downloading 2.jpg...
...
2024-03-14 10:30:35 - INFO - Total images downloaded: 25
2024-03-14 10:30:35 - INFO - You can view the saved images at: /path/to/Saved Images/Example

🔧 Configuration

The package uses sensible defaults but can be customized:

  • Headless Mode: Browser runs in headless mode by default
  • Timeout: Default page load timeout is 30 seconds
  • Save Location: Images are saved in a "Saved Images" directory with subdirectories based on page titles

🛠️ Development

Setting up Development Environment

  1. Clone the repository:
git clone https://github.com/LpCodes/LP-All-Images-Downloader.git
cd LP-All-Images-Downloader
  1. Install development dependencies:
pip install -r requirements.txt
  1. Run tests:
python -m pytest

🧑‍💻 Author

Created and maintained by @LpCodes.

📜 License

This project is licensed under the MIT License. Feel free to use and modify it as needed.

🤝 Contributing

Contributions are welcome! Here's how you can contribute:

  1. Fork the repository
  2. Create a new branch: git checkout -b feature-name
  3. Make your changes and commit them: git commit -m 'Add feature-name'
  4. Push to your branch: git push origin feature-name
  5. Open a pull request and describe your changes

Development Guidelines

  • Follow PEP 8 style guide
  • Add type hints to all functions
  • Include docstrings for all functions
  • Add tests for new features
  • Update documentation as needed

🐛 Known Issues and Limitations

  • Some websites may block automated browsers
  • Very large pages may require more memory
  • Some dynamic content may not load properly

🌟 Feedback & Suggestions

Have ideas to improve the package or documentation? Open an issue on the GitHub repository.

📝 Additional Resources


Thank you for using LP Images Downloader! Your feedback helps make this project better. 😊

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lpimagesdownloader-1.1.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

LpImagesDownloader-1.1.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file lpimagesdownloader-1.1.0.tar.gz.

File metadata

  • Download URL: lpimagesdownloader-1.1.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.11

File hashes

Hashes for lpimagesdownloader-1.1.0.tar.gz
Algorithm Hash digest
SHA256 3b77f2bc0b7aa0903fd86cbfe9421180eab81c63290c4f22b7072508befccb39
MD5 e0f0cbd9b94f202b6569221129af0f09
BLAKE2b-256 5fad4a72fe9f2d0b592743679168e3572fc945db858f4812152c501c6f304e60

See more details on using hashes here.

File details

Details for the file LpImagesDownloader-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for LpImagesDownloader-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 204bc14815fe96ed452b811a1bfd7e816707c8997a27ea7aac8abe01c8d86dd2
MD5 1109a6a17a2443f320aa433d6f2ef996
BLAKE2b-256 106cdf43a21bb0fda2b0e7fa2253687da80068e6973b97727045a8ded9fc287e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page