Skip to main content

Python library for getting a list of details regarding the Bulgarian State Gazette (Държавен вестник) issues

Project description

📰 Vestige

A Python library for fetching and parsing issues of the Bulgarian State Gazette (Държавен вестник).

Vestige gives you a clean, dependency-light Python interface to the official Държавен вестник listing. Scrape issue metadata and download links without wrestling with raw HTML or cryptic JSF form fields ever again.

✨ Features

  • 📄 Issue Listings: Fetch paginated lists of State Gazette issues, including issue number, date, year, and type.
  • 📥 Download Links: Automatically resolve the PDF and RTF download URLs for each issue.
  • 🔌 Pluggable Architecture: Swap out the HTTP transport or the HTML parser via simple interfaces — great for testing with mocks.
  • 🗂️ Typed Models: Clean dataclasses (IssueEntry, DownloadFile, PageResult) with to_dict() helpers for easy JSON serialisation.
  • ⚡ Minimal Dependencies: Only needs requests and beautifulsoup4.

📥 Installation

pip install vestige-scraper

Or, to install directly from source:

pip install .

🚀 Quick Start

from vestige import DVClient

client = DVClient()

# Fetch the first page of issues (with download URLs resolved)
page = client.get_page(1)

print(page)
# PageResult(page=1, total_results=..., total_pages=..., entries=...)

for entry in page.entries:
    print(entry)
    for file in entry.download_urls:
        print(f"  → {file.filename}: {file.url}")

Fetch all pages at once

all_pages = client.get_all_pages(max_pages=5)

for page in all_pages:
    for entry in page.entries:
        print(entry.to_dict())

Skip download URL resolution (faster)

page = client.get_page(1, fetch_downloads=False)

🗂️ Models

Class Description
IssueEntry One issue of the State Gazette — number, date, year, type, and download files.
DownloadFile A single downloadable file (url, filename).
PageResult One page of results — holds metadata and a list of IssueEntry objects.

⚙️ Advanced Usage

Custom transport / parser (e.g. for testing)

from vestige import DVClient
from vestige.network.transport import RequestsTransport
from vestige.scraping.parsers import IssueParser

client = DVClient(
    transport=MyCustomTransport(),
    parser=MyCustomParser(),
)

Both transport and parser accept any object that satisfies the PageFetcher and PageParser interfaces defined in vestige.core.interfaces.

🐍 Requirements

  • Python 3.10+
  • requests >= 2.31
  • beautifulsoup4 >= 4.12

🤝 Contributing

Issues and pull requests are welcome! Please file an issue if you encounter any problems or have suggestions for improvements.


Built with ❤️ for Bulgaria's open data. MIT Licensed.

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

vestige_scraper-1.0.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

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

vestige_scraper-1.0.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file vestige_scraper-1.0.0.tar.gz.

File metadata

  • Download URL: vestige_scraper-1.0.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vestige_scraper-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d15db7934a96bc2917847fc961eab3a52e02b03ea3dfdeb7539ec7b373511dda
MD5 e1d9affe70c0269d96647537ebd7e4c8
BLAKE2b-256 76b5dcb1048bbc09e098ca3b472f3bea38e5a3ac873621e795eb4fcd7f44ffd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for vestige_scraper-1.0.0.tar.gz:

Publisher: publish.yml on ytcalifax/vestige

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vestige_scraper-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for vestige_scraper-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ecdd219838e9c7d43677825017d101a55db54d59612b50ef005cef2415d1be40
MD5 e7785f81cab31c1613cbc9eec30eff6e
BLAKE2b-256 3de4c54427449e89f54b10e9c3972eb873fdda4618eb196c4fa7af9e204f423d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vestige_scraper-1.0.0-py3-none-any.whl:

Publisher: publish.yml on ytcalifax/vestige

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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