← Tous les articles

Nouveau dans ScrapeUnblocker : interagissez avec une page, puis extrayez-la

ScrapeUnblocker est notre API de web scraping : vous lui donnez une URL, et elle vous renvoie le HTML entièrement rendu de cette page, en franchissant au passage les protections anti-bot pour vous. Aujourd’hui, nous ajoutons une nouvelle capacité. Avant de vous remettre le HTML, ScrapeUnblocker peut maintenant interagir avec la page.

Cela signifie que vous pouvez atteindre les données qui n’apparaissent qu’après une action : saisir une requête et lancer une recherche, cliquer sur un bouton “charger plus”, choisir un pays ou une devise dans une liste déroulante ou parcourir un formulaire en plusieurs étapes, et récupérer le HTML atteint par la page une fois ces actions exécutées. Une fonctionnalité complémentaire liste chaque élément interactif d’une page, pour que vous sachiez exactement où cliquer, où saisir ou quoi sélectionner. Cet article couvre les deux, et comment les utiliser ensemble.

Comment l’utiliser

Les deux fonctionnalités sont de simples paramètres de requête sur la même requête de récupération de page que vous faites déjà (l’endpoint getPageSource). Pas de nouvelle URL, pas de nouvelle formule, et aucun navigateur à faire tourner de votre côté.

  • list_elements=true renvoie une carte JSON des éléments interactifs de la page au lieu du HTML.
  • steps=[...] prend un tableau JSON d’actions exécutées après le chargement de la page, et renvoie le HTML atteint.

Vous les utiliserez presque toujours dans cet ordre : list_elements pour trouver les sélecteurs, steps pour agir dessus.

Découvrir les éléments d’une page

Avant de pouvoir agir sur une page, vous devez savoir ce qu’elle contient. Mettez list_elements=true et, au lieu du HTML brut, vous obtenez une liste JSON compacte de ce sur quoi vous pouvez agir : boutons, champs de saisie, zones de texte, listes déroulantes, liens et formulaires. Chacun arrive avec un sélecteur prêt à l’emploi, ainsi que son texte, son nom, son placeholder et son rôle lorsqu’ils existent.

curl -X POST -G "https://api.scrapeunblocker.com/getPageSource" \
  --data-urlencode "url=https://www.example.com/search" \
  --data-urlencode "list_elements=true" \
  -H "X-ScrapeUnblocker-Key: YOUR_API_KEY"

La réponse ressemble à ceci :

{
  "url": "https://www.example.com/search",
  "count": 12,
  "elements": [
    {
      "tag": "input",
      "selector": "#searchInput",
      "type": "text",
      "name": "q",
      "placeholder": "Search products",
      "text": "Search products"
    },
    {
      "tag": "button",
      "selector": "button.search-submit",
      "text": "Search"
    },
    {
      "tag": "select",
      "selector": "select[name=\"country\"]",
      "name": "country",
      "text": "Country"
    }
  ]
}

Comme la page est mesurée après qu’un vrai navigateur l’a rendue et hydratée, vous voyez les contrôles qu’un utilisateur voit réellement, et pas seulement ce qui figure dans le balisage brut. Les sélecteurs sont choisis pour être stables : d’abord un vrai #id, puis un name, ensuite une classe et enfin un court chemin positionnel, de sorte que vous pouvez glisser n’importe lequel directement dans une étape.

Agir sur la page avec steps

Une fois les sélecteurs connus, vous attachez steps : un tableau JSON d’actions que l’API exécute dans l’ordre après le chargement de la page. Quand les étapes se terminent, vous récupérez le HTML obtenu - exactement comme si vous aviez effectué vous-même les clics et les frappes.

Voici un flux de recherche : saisissez une requête dans le champ, appuyez sur Entrée et attendez l’apparition des résultats avant de capturer le HTML.

curl -X POST -G "https://api.scrapeunblocker.com/getPageSource" \
  --data-urlencode "url=https://www.example.com/search" \
  --data-urlencode 'steps=[
    {"action":"type","selector":"#searchInput","value":"bmw"},
    {"action":"press_key","value":"Enter"},
    {"action":"wait_for","selector":".results"}
  ]' \
  -H "X-ScrapeUnblocker-Key: YOUR_API_KEY"

La réponse est le HTML entièrement rendu de la page de résultats. Le même schéma gère un bouton “charger plus” (cliquez, attendez de nouvelles lignes), une liste déroulante de filtre (sélectionnez une option, attendez que la liste se rafraîchisse) ou un flux à deux champs du type se connecter et consulter.

Quelques points à connaître :

  • La saisie est proche de l’humaine. L’action type saisit le texte caractère par caractère à un rythme naturel, au lieu de le coller d’un coup, de sorte que les formulaires qui surveillent de vraies frappes se comportent normalement.
  • Elle s’exécute une fois. Une requête avec steps peut soumettre un formulaire ou modifier l’état, elle est donc exécutée une seule fois et n’est pas réessayée en coulisses. Demandez exactement la séquence voulue.
  • Il y a un budget de temps. Toute la séquence partage un budget d’action borné d’environ 30 secondes, largement suffisant pour une recherche ou deux clics. Utilisez wait_for sur l’élément dont vous avez réellement besoin plutôt qu’un long wait fixe.

Les actions que vous pouvez exécuter

Chaque étape est un objet avec une action et, selon l’action, un selector et une value. Les actions disponibles sont :

  • wait_for - attendre qu’un élément correspondant à selector soit visible.
  • wait_for_text - attendre qu’un texte donné apparaisse quelque part sur la page (value est le texte).
  • wait - une pause fixe, avec value en millisecondes.
  • click - cliquer sur l’élément à selector.
  • type - saisir value dans le champ à selector, caractère par caractère.
  • select - choisir une option dans un <select> par sa valeur.
  • press_key - appuyer sur une touche comme Enter, Tab ou Escape.
  • scroll - faire défiler la page, avec value réglé sur "bottom" ou un nombre de pixels, ce qui déclenche le contenu qui se charge au défilement.

Les sélecteurs sont en CSS par défaut. Si vous préférez, une étape peut porter "selector_type": "xPath" pour cibler un élément par XPath.

Quand une étape échoue, vous obtenez quand même la page

Si une étape ne peut pas aboutir - un sélecteur ne correspond jamais, ou un élément n’apparaît jamais à temps -, l’API ne se contente pas de renvoyer une erreur en jetant le travail. Elle répond avec un HTTP 422 et un corps JSON qui nomme exactement quelle étape a échoué et pourquoi, et qui inclut le HTML de la page dans l’état atteint.

{
  "error": "step_failed",
  "step_index": 2,
  "action": "wait_for",
  "reason": "Timeout 8000ms exceeded.",
  "selector": ".results",
  "html": "<!doctype html>..."
}

Ce step_index vous indique que la troisième étape (en comptant à partir de zéro) est celle à corriger, et le html vous laisse voir ce que la page a réellement fait - peut-être que le conteneur de résultats porte une classe différente de celle attendue. Un payload steps mal formé, comme une action inconnue ou un sélecteur manquant, est détecté encore plus tôt et renvoie un 422 avant qu’aucun navigateur ne démarre, de sorte que vous ne dépensez jamais une requête pour une coquille.

Quand est-ce utile

Chaque fois que les données que vous voulez ne sont pas dans le premier rendu, mais à une ou deux interactions de distance :

  • Résultats de recherche derrière un formulaire. Saisissez une requête, soumettez-la et extrayez la page de résultats au lieu de deviner une URL de recherche.
  • Listes paginées ou à défilement infini. Cliquez sur “charger plus” ou défilez jusqu’en bas, attendez les nouvelles lignes et capturez une page plus complète.
  • Sélecteurs de pays, de devise ou de langue. Choisissez l’option dont vous avez besoin pour que les prix et le contenu que vous extrayez correspondent au marché qui vous intéresse.
  • Flux en plusieurs étapes. Remplissez un champ, passez au suivant, soumettez, et lisez la page où vous arrivez.
  • Agents IA qui doivent d’abord comprendre une page. Un agent peut lister les éléments, décider quoi faire, puis agir - sans sélecteurs codés en dur.

Découvrir, puis agir : la boucle complète

Les deux fonctionnalités sont conçues pour fonctionner en duo, et c’est là qu’elles brillent pour les agents IA et l’automatisation. Un agent qui arrive sur une page inconnue ne peut pas deviner les sélecteurs de façon fiable. Alors il fait ce que fait une personne : il regarde d’abord.

  1. Appelez list_elements=true pour obtenir les contrôles de la page et leurs sélecteurs.
  2. Décidez quoi faire - quel champ remplir, quel bouton cliquer - à partir de cette liste.
  3. Construisez un tableau steps contre ces sélecteurs exacts.
  4. Appelez l’endpoint avec les étapes et lisez le HTML obtenu.

Comme la première étape renvoie de vrais sélecteurs stables plutôt qu’une capture d’écran que le modèle doit interpréter, le plan que l’agent construit à l’étape trois fonctionne le plus souvent du premier coup. Et comme chaque appel s’exécute déjà derrière le même traitement anti-bot que le reste de ScrapeUnblocker, l’agent n’a jamais à se soucier des blocages, de la rotation d’IP ou du rendu : il découvre la page et agit dessus, tout simplement.

Les deux fonctionnalités sont désormais disponibles. Consultez la référence complète des paramètres et d’autres exemples dans la documentation d’intégration sur docs.scrapeunblocker.com, ou voyez les formules sur scrapeunblocker.com/pricing.

Essayez ScrapeUnblocker gratuitement

Taux de réussite de plus de 95 % · à partir de 0,55 € pour 1 000 appels · 500 requêtes gratuites à l'inscription.

Essayer gratuitement → Voir les tarifs