Skip to main content

Greek Web Scraper

Greek Scraper PyPI version

A high-performance web scraper built on Scrapy and optimized for Greek-language content extraction. This tool leverages GPU acceleration (via CuPy) for text processing and features robust retry mechanisms to ensure reliable scraping across multiple domains.

🚀 Features

  • Efficient Web Scraping: Leverages Scrapy with custom middlewares for encoding handling and retries.
  • GPU Acceleration: Utilizes CuPy for GPU-based text processing to speed up cleaning and filtering of Greek text.
  • Robust Encoding Handling: Automatically detects and converts text encodings to handle diverse content.
  • Custom Retry Mechanism: Skips problematic domains to minimize downtime and maximize throughput.
  • Parallel Domain Scraping: Configurable concurrency allows simultaneous scraping of multiple domains.
  • Automatic Text Extraction: Integrates trafilatura and BeautifulSoup for precise content extraction.
  • Flexible Storage Pipelines: Outputs cleaned and structured data to JSONL or JSON formats for easy downstream processing.

📂 Project Structure

greek_scraper/
├── __init__.py          # Package initialization and helper functions
├── cli.py               # Command-line interface for running the scraper
├── gpu_processor.py     # GPU-based text processing routines
├── middlewares.py       # Custom Scrapy middlewares for encoding and retry mechanisms
├── pipelines.py         # Data processing and storage pipelines
├── spider.py            # Main Scrapy spider for scraping Greek websites
└── utils.py             # Additional utility functions (if applicable)

Note: Additional modules or directories (e.g., tests/ or docs/) might be present in the repository.

⚙️ Installation

Prerequisites

  • Python: Version 3.10 or above.
  • CUDA: Ensure you have a compatible CUDA toolkit if using GPU acceleration.
  • CuPy: Install the version matching your CUDA setup.

Steps

Clone the Repository

git clone https://github.com/Charisn/Greek-web-scraper.git
cd Greek-web-scraper

Create a Virtual Environment (Optional but Recommended)

python -m venv venv
source venv/bin/activate      # Linux/MacOS
venv\Scripts\activate       # Windows

Install Dependencies

pip install -r requirements.txt

Install CuPy for GPU Acceleration

pip install cupy-cuda12x  # Adjust version to match your CUDA toolkit

! CUDA CUDA Toolkit 12.1 Is Required

https://developer.nvidia.com/cuda-12-1-0-download-archive

🕵️ Usage

Command-Line Interface

If the package includes a CLI entry point (as defined in the setup), you can run:

greek-scraper --help

This should provide usage information and available options.

Python API

Single Domain Scraping

import greek_scraper

# Scrape a single domain
greek_scraper.scrape("example.gr")

Multi-Domain Scraping

import greek_scraper

# Scrape multiple domains simultaneously
domains = ["example.gr", "another.gr"]
greek_scraper.multi_scrape(domains)

Scraping from a File

import greek_scraper

# Provide a file containing a list of domains (one per line)
greek_scraper.from_file("domains.txt")

Custom Configuration Example

import greek_scraper

# Configure settings before starting the scrape
greek_scraper.gpu(True)              # Enable GPU processing
greek_scraper.output_path("output.jsonl")  # Set output file name
greek_scraper.language("greek")      # Focus on Greek language content
greek_scraper.threads(4)             # Set concurrent requests per domain
greek_scraper.speed(7)               # Increase scraping speed (scale 1-10)

# Start scraping after configuration
greek_scraper.scrape("example.gr")

🛠 Configuration

The scraper exposes several configurable functions to tailor its behavior:

Function Description Default Value
gpu(True/False) Enable/disable GPU processing False
output_path("file.jsonl") Specify the output file name scraped_data.jsonl
threads(n) Set number of concurrent requests per domain 1
speed(n) Adjust scraping speed (scale 1-10) 5
language("greek") Filter extracted text by language (Greek only) greek

Note: The functions can be chained or called independently before initiating the scraping process.

📜 License

This project is licensed under the GNU Lesser General Public License v2.1.
For details, see LGPL v2.1 License.

👨‍💻 Author

Charis Nikolaidis
GitHub – ncharis97@gmail.com

🌟 Show Your Support!

If you find this project useful, please consider giving it a ⭐ on GitHub!

❓ Contributing

Contributions, suggestions, and bug reports are always welcome!

  1. Fork the repository.
  2. Create a feature branch: git checkout -b feature/YourFeature.
  3. Commit your changes: git commit -m 'Add new feature'.
  4. Push to the branch: git push origin feature/YourFeature.
  5. Open a Pull Request.

For major changes, please open an issue first to discuss what you would like to change.

Metadata

Release files for greek-scraper 0.9.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for greek-scraper 0.9.4
File Size Uploaded
greek_scraper-0.9.4.tar.gz 24.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for greek-scraper 0.9.4
File Interpreter ABI Platform
greek_scraper-0.9.4-py3-none-any.whl Python 3 none any Details

Total release size: 46.8 kB

Release files / greek_scraper-0.9.4.tar.gz

Download URL greek_scraper-0.9.4.tar.gz
Size 24.0 kB
Tags Source
SHA-256 checksum
How to use checksums
eafdab7931a6dc136598164616678e39847d92b9a17635986c660ddde9afecd7
BLAKE2b-256 checksum
How to use checksums
8fe7dffafda237a6a8c61797e955c01674af32a913f4cdf89d31218071a36127
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / greek_scraper-0.9.4-py3-none-any.whl

Download URL greek_scraper-0.9.4-py3-none-any.whl
Size 22.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0faf2563ba0771b624076853dcbe5adba455dcfe09ffc5153115abd957d0eefd
BLAKE2b-256 checksum
How to use checksums
5afc74107bab6e64adef9f03c5eef27326c5d0860c4a84d42b5846d5c769dd27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.9.4 This release

2 release files

0.4

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page