Skip to main content

A Python client for the Monitoro API

Project description

Monitoro API Client

This is a Python client for the Monitoro API, which allows you to extract data from websites using Monitoro's monitoring capabilities.

Installation

You can install the Monitoro API client using pip:

pip install monitoro

Usage

Here are some examples of how to use the Monitoro API client:

Basic Usage

from monitoro import Monitoro, MonitoroAPIError

# Initialize the client with your API token
client = Monitoro("your_api_token_here")

try:
    # Extract data from a single URL using a specific monitor
    for url, result in client.extract(monitor="monitor_id", url="https://example.com"):
        print(f"Extracted data from {url}:")
        print(result)


    # Extract data from multiple URLs using a specific monitor
    urls = ["https://example.com", "https://example.org", "https://example.net"]
    for url, result in client.extract(monitor="monitor_id", urls=urls):
        print(f"Extracted data from {url}:")
        print(result)


    # Extract data using a template
    for url, result in client.extract(template="template_id", urls=["https://example.com"]):
        print(f"Extracted data from {url} using template:")
        print(result)

    # Extract data using selectors
    for url, result in client.extract(selectors={"title": "h1", "author": "span.author"}, urls=["https://example.com"]):
        print(f"Extracted data from {url} using template:")
        print(result)

except MonitoroAPIError as e:
    print(f"An error occurred: {e}")

Using MonitoroSwarm for Distributed Extraction

from monitoro import MonitoroSwarm, MonitoroAPIError

# Initialize the swarm client with multiple API tokens
swarm = MonitoroSwarm(["token1", "token2", "token3"])

try:
    urls = ["https://example.com", "https://example.org", "https://example.net"]

    for url, result in swarm.extract(template="template_id", urls=urls):
        print(f"Extracted data from {url}:")
        print(result)
    
    for url, result in swarm.extract(selectors={"title": "h1"}, urls=urls):
        print(f"Extracted data from {url}:")
        print(result)
        
except MonitoroAPIError as e:
    print(f"An error occurred: {e}")

API Reference

Monitoro(token)

Creates a new Monitoro API client instance.

  • token (str): Your Monitoro API token.

Monitoro.extract(monitor_id=None, template_id=None, selectors=None, url=None, urls=None, no_ingest=False)

Extracts data from URLs using a specific monitor's settings or a template.

  • Only one of these parameters should be provided at a time.

    • monitor_id (str, optional): The ID of the monitor to use for extraction.
    • template_id (str, optional): The ID of the template to use for extraction.
    • selectors (dict, optional): The selectors to use for extraction.
  • url (str, optional): The URL to extract data from.

  • urls (list, optional): The list of URLs to extract data from.

  • no_ingest (bool, optional): If True, skip running automations. Defaults to False. Only valid with monitor_id.

Returns a generator that yields (url, data) tuples for successful extractions, followed by a list of (url, error) tuples for failed extractions.

MonitoroSwarm(tokens)

Creates a new Monitoro Swarm client instance for distributed extraction.

  • tokens (list): A list of Monitoro API tokens.

The MonitoroSwarm class has the same extract method as the Monitoro class, but it distributes the workload across multiple API tokens. Calling extract with monitor_id is not supported in swarm mode, and no_ingest is always set to false in this mode.

Error Handling

The client raises specific exceptions for different error scenarios:

  • BadRequestError: For 400 Bad Request errors (e.g., missing URL or malformed request)
  • MonitorNotFoundError: For 404 Monitor Not Found errors
  • ServerError: For 500 Server Error during data extraction
  • MonitoroAPIError: Base exception for all other API errors

You can catch these exceptions to handle errors in your code.

License

This client is licensed under the MIT License.

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

monitoro-0.2.0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

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

monitoro-0.2.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file monitoro-0.2.0.tar.gz.

File metadata

  • Download URL: monitoro-0.2.0.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for monitoro-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9fa7f1573974f402980281080dbdbff77c42d2eb7097ef7e7824e53adec9582f
MD5 250285ca73b6d3637b236b2ab94ea29f
BLAKE2b-256 2a2f6456558f6889a71b7127ae82aa5124f0404d04b525ad801f37ad6470e561

See more details on using hashes here.

File details

Details for the file monitoro-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: monitoro-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for monitoro-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74bf49ac1626025cc940f0a6b65a384d7caf20bb41002bd338bf7fe65a5eaeba
MD5 6de0d9b6c5c9e712ecdff51363cf707a
BLAKE2b-256 2877be214445ca199dd8bf34401eb175f7597e4e3713da2edc2e92f5972c3cda

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