Skip to content

API de capture Python : exemple complet de bout en bout

Tutoriel Python complet couvrant l'installation, les captures basiques, la génération PDF, les étapes d'automatisation, l'extraction de données et le traitement par lots avec le SDK ScreenshotCenter.

Installation

Installez le SDK Python depuis PyPI :

pip install screenshotcenter

Capture basique

import screenshotcenter

client = screenshotcenter.Client(api_key="YOUR_API_KEY")

# Prendre une capture
result = client.create(url="https://example.com")
print(result["screenshot_url"])

La méthode create() envoie la requête et renvoie le résultat quand la capture est prête. Le résultat inclut l'URL de la capture, le statut et les métadonnées.

Capture pleine page avec contrôle du viewport

result = client.create(
    url="https://example.com",
    full_page=True,
    screen_width=1920,
    screen_height=1080,
    device_scale=2,  # Retina
    delay=2000,      # Attendre 2s pour le contenu lazy
)

Génération PDF

result = client.create(
    url="https://example.com/invoice",
    pdf=True,
    pdf_format="A4",
    pdf_margin_top="20mm",
    pdf_margin_bottom="20mm",
    pdf_background=True,
)

# Télécharger le PDF
client.download(result["id"], "invoice.pdf")

Voir l'API de génération PDF pour tous les paramètres PDF.

Étapes d'automatisation (flux de connexion)

result = client.create(
    url="https://app.example.com/login",
    steps=[
        {"action": "type", "target": "#email", "value": "user@example.com"},
        {"action": "type", "target": "#password", "value": "s3cret"},
        {"action": "click", "target": "button[type=submit]"},
        {"action": "wait", "value": 3000},
    ],
)

Le navigateur remplit le formulaire de connexion, le soumet, attend le chargement de la page, puis prend la capture. Voir l'API de capture authentifiée pour plus de patterns.

Extraction de données avec les trackers

result = client.create(
    url="https://example.com/product/123",
    trackers=[
        {"name": "price", "selector": ".product-price", "type": "text"},
        {"name": "title", "selector": "h1", "type": "text"},
        {"name": "in_stock", "selector": ".stock-status", "type": "text"},
    ],
)

# Accéder aux données extraites
for tracker in result.get("trackers", []):
    print(f"{tracker['name']}: {tracker['value']}")

Les trackers extraient des valeurs du DOM en même temps que la capture — pas de scraping séparé. Voir l'extraction de données de pages web pour des patterns avancés.

Routage par pays

# Capture depuis l'Allemagne
result = client.create(
    url="https://example.com",
    country="de",
    locale="de-DE",
    timezone="Europe/Berlin",
)

Captures par lots

# Soumettre un lot
batch = client.batch_create(
    urls=["https://example.com/page1", "https://example.com/page2", "https://example.com/page3"],
    options={"full_page": True, "country": "us"},
)

# Suivre la progression
info = client.batch_info(batch["id"])
print(f"Progression : {info['completed']}/{info['total']}")

Pour le traitement par lots à grande échelle, voir captures par lots à grande échelle.

Livraison vers S3

result = client.create(
    url="https://example.com",
    apps=[{
        "app": "s3",
        "bucket": "my-screenshots",
        "path": "captures/{yyyy}/{mm}/{dd}/{id}.png",
    }],
)

Voir l'intégration S3 pour la configuration IAM et les variables de modèle de chemin.

Gestion des erreurs

try:
    result = client.create(url="https://example.com")
except screenshotcenter.APIError as e:
    print(f"Erreur API {e.status_code}: {e.message}")
except screenshotcenter.TimeoutError:
    print("Capture expirée — essayez d'augmenter le délai")

Étapes suivantes

Parcourez la référence complète du SDK Python pour toutes les méthodes et paramètres. Pour JavaScript, voir le SDK JavaScript.