Cherchez un mot-clé populaire sur Amazon et les premiers résultats que vous voyez sont rarement les plus organiques. Ce sont des Sponsored Products : des annonces pay-per-click (PPC) sur lesquelles les marques enchérissent pour apparaître en tête d'une page de résultats, chacune étiquetée avec un petit badge "Sponsorisé" ou "Annonce". Ces emplacements sont publics, et la configuration des produits qui font de la publicité sur quels mots-clés est une fenêtre directe sur la stratégie concurrentielle, les priorités de dépenses publicitaires et les termes sur lesquels une catégorie se bat.

Ce guide vous montre comment extraire les données publicitaires PPC Amazon avec Python. Vous construisez un petit scraper fonctionnel qui récupère une page de résultats de recherche Amazon rendue via la Crawling API, analyse uniquement les emplacements sponsorisés de la grille avec BeautifulSoup et extrait un enregistrement propre pour chaque annonce : titre, prix, position sur la page et lien produit. L'ensemble du tutoriel reste délibérément limité aux données publiques de la page de recherche que tout acheteur voit, et la section légale près de la fin n'est pas du remplissage, donc lisez-la avant de pointer ce scraper sur un volume réel.

Ce que vous allez construire

Un script Python qui prend un mot-clé de recherche, récupère la page de résultats Amazon rendue via la Crawling API, isole les cartes sponsorisées des organiques et extrait un enregistrement structuré par annonce. Nous utiliserons une recherche headphones comme exemple fil conducteur et extrairons ces champs de chaque carte sponsorisée :

  • Titre le texte du titre du produit annoncé.
  • Prix le prix affiché sur la carte sponsorisée.
  • Position où l'annonce se trouve dans l'ordre des résultats, pour voir les emplacements en haut de page versus les emplacements plus bas.
  • Lien l'URL vers la propre page de détail du produit annoncé.
  • Mot-clé le terme de recherche pour lequel l'annonce est apparue, transmis pour que vous puissiez regrouper les résultats par requête.

Pourquoi une simple requête échoue sur Amazon

Si vous demandez une URL de recherche Amazon avec un simple client HTTP, vous obtenez une réponse avec le statut 200 et presque aucune donnée produit dans le corps. Deux facteurs jouent contre vous. Premièrement, Amazon charge sa grille de recherche dynamiquement : le HTML initial est largement une coquille, et le contenu important se remplit via JavaScript et Ajax une fois que la page s'exécute dans un navigateur. Enregistrez une récupération brute dans un fichier et vous constaterez que les cartes sponsorisées ne s'y trouvent tout simplement pas. Deuxièmement, Amazon détecte rapidement le trafic automatisé. Les IP de datacenter et les schémas de requêtes qui ne ressemblent pas à un vrai navigateur se heurtent à un CAPTCHA ou sont bloqués avant d'atteindre les annonces rendues.

Un scraper d'annonces Amazon fonctionnel a donc besoin de deux choses en une seule requête : un navigateur qui rende réellement la page, et une IP que la plateforme lise comme un vrai acheteur. Vous pouvez assembler cela vous-même avec un navigateur headless et un pool de proxies résidentiels rotatifs, mais assembler ces deux éléments et les maintenir en bon état représente l'essentiel du travail. La Crawling API regroupe les deux en un seul appel : vous lui envoyez l'URL avec un token JavaScript, elle rend la page derrière une IP résidentielle de confiance, et elle retourne le HTML terminé à analyser. Pour plus d'informations sur pourquoi les sites rendus côté client résistent aux requêtes brutes, voir comment crawler des sites web JavaScript.

Pourquoi le token JS

Crawlbase propose deux types de tokens. Le token normal (TCP) récupère le HTML statique ; le token JavaScript (JS) rend d'abord la page dans un vrai navigateur. Amazon s'appuie fortement sur JavaScript pour le contenu dynamique, donc vous avez besoin du token JS ici. Le token normal retourne la même coquille vide qu'une récupération brute, et il n'y a rien à analyser à l'intérieur.

Prérequis

Vous avez besoin de quelques éléments en place avant d'écrire du code. Aucun ne prend beaucoup de temps.

Python de base. Vous devez être à l'aise pour écrire et exécuter un script Python et installer des paquets avec pip. Si vous êtes novice dans le langage, la documentation officielle Python et n'importe quel cours débutant vous amèneront au niveau que ce tutoriel suppose acquis.

Python 3.8 ou ultérieur. Vérifiez votre version avec python --version. Si vous ne l'avez pas, installez-le depuis python.org ou via une distribution comme Anaconda.

Un compte Crawlbase et un token JS. Inscrivez-vous pour un compte gratuit, ouvrez votre tableau de bord et copiez votre token JavaScript (JS) depuis la page de documentation du compte. Le niveau gratuit inclut jusqu'à 20 000 requêtes sans carte, ce qui est amplement suffisant pour suivre ce guide. Traitez le token comme un mot de passe : il authentifie vos requêtes, donc gardez-le hors du contrôle de version.

Configurer le projet

Créez un environnement virtuel pour isoler les dépendances du projet, puis installez les bibliothèques dont le scraper a besoin.

bash
python --version

python -m venv amazon_env
source amazon_env/bin/activate

pip install crawlbase beautifulsoup4 pandas

Sous Windows, activez l'environnement avec amazon_env\Scripts\activate à la place de la ligne source. Trois dépendances font le travail : crawlbase est le client officiel de la Crawling API, beautifulsoup4 analyse le HTML retourné pour extraire chaque champ par sélecteur CSS, et pandas vous aide à organiser les annonces extraites pour l'analyse par mot-clé à la fin.

Comprendre les emplacements sponsorisés Amazon

Une page de résultats de recherche Amazon est une grille de cartes produits. La plupart sont des annonces organiques classées par pertinence, mais parmi elles se trouvent des Sponsored Products : les annonces PPC. Visuellement, elles ressemblent à n'importe quelle autre carte, avec un titre, un prix, une image et une étiquette "Sponsorisé". Structurellement, Amazon enveloppe les cartes sponsorisées de manière à pouvoir les distinguer des organiques, ce qui est exactement ce qui vous permet de ne scraper que les annonces.

Avant d'écrire des sélecteurs, ouvrez une page de recherche dans votre navigateur, faites un clic droit sur une carte sponsorisée et choisissez Inspecter. Les cartes sponsorisées résident dans des conteneurs portant une classe AdHolder aux côtés des attributs de résultat habituels data-asin. Le titre se trouve dans une ancre à l'intérieur de l'en-tête de la carte, et le prix est exposé via le balisage a-price d'Amazon. Ce sont les hooks que vous ciblez. Les noms de classe d'Amazon changent avec le temps, mais le marqueur AdHolder et la structure a-price ont été durables, donc misez sur eux.

Étape 1 : Récupérer la page de recherche rendue

Commencez par obtenir la page terminée. Importez la classe CrawlingAPI, initialisez-la avec votre token JS, construisez l'URL de recherche à partir d'un mot-clé et demandez-la avec les options d'attente dont la grille dynamique d'Amazon a besoin. Vérifier le code de statut avant d'analyser rend les échecs visibles plutôt que silencieux.

python
from crawlbase import CrawlingAPI

# Amazon is JavaScript-rendered, so use your JS token here
api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

def crawl(page_url):
    options = {"page_wait": 2000, "ajax_wait": "true"}
    response = api.get(page_url, options)
    if response["status_code"] == 200:
        return response["body"].decode("latin1")
    print(f"Request failed: {response['status_code']}")
    return None

if __name__ == "__main__":
    keyword = "headphones"
    search_url = f"https://www.amazon.com/s?k={keyword}"
    html = crawl(search_url)
    print(html[:500] if html else "No HTML returned")

Les deux options d'attente comptent pour une cible dynamique comme celle-ci. ajax_wait indique à l'API d'attendre la fin du chargement du contenu asynchrone, et page_wait maintient une attente fixe en millisecondes après le chargement pour que la grille à rendu tardif apparaisse avant la capture de la page. Deux secondes est un bon point de départ ; augmentez si des cartes reviennent manquantes. Le corps est décodé en latin1 car les pages Amazon mélangent des caractères que le décodage strict UTF-8 peut bloquer, et latin1 les gère sans erreur. Exécutez le script et vous devriez voir le vrai balisage produit, pas la coquille vide qu'une récupération brute retourne. Cela confirme que le rendu fonctionne avant d'écrire un seul sélecteur.

Crawlbase Amazon Scraper

Amazon a besoin d'une page rendue derrière une IP de confiance, en un seul appel, c'est pourquoi la récupération brute ci-dessus retourne une coquille vide. La Crawling API prend un token JS, exécute la page dans un vrai navigateur, fait tourner les IP résidentielles côté serveur et vous remet le HTML terminé, ce qui vous évite de gérer une flotte de navigateurs headless et un pool de proxies vous-même. Pointez-la sur un mot-clé sur le niveau gratuit d'abord.

Étape 2 : Analyser les cartes sponsorisées avec BeautifulSoup

HTML rendu en main, chargez-le dans BeautifulSoup et sélectionnez uniquement les cartes sponsorisées. C'est la différence clé par rapport à un scrape de recherche ordinaire : au lieu de prendre chaque résultat, vous ciblez les conteneurs AdHolder pour ne collecter que les annonces. Puis extrayez chaque champ par son sélecteur, porté directement depuis le balisage de la page en direct. Encapsulez chaque carte dans un try/except pour qu'une annonce mal formée ne fasse pas planter l'exécution.

python
from bs4 import BeautifulSoup

def parse_ads(html, keyword):
    soup = BeautifulSoup(html, "html.parser")

    # Select only sponsored (PPC) cards, not organic results
    ads = soup.select(
        '.AdHolder div[data-asin], '
        'div[data-asin][data-component-type="s-search-result"].AdHolder'
    )

    results = []
    for position, ad in enumerate(ads, start=1):
        try:
            # Price inside the ad card
            price_el = ad.select_one("span.a-price span.a-offscreen")
            price = price_el.text.strip() if price_el else "Price not found"

            # Title inside the ad card
            title_el = ad.select_one(
                "div.a-section h2 a.a-link-normal span, "
                "div.a-section a.a-link-normal span.a-offscreen"
            )
            title = title_el.text.strip() if title_el else "Title not found"

            # Link to the advertised product page
            link_el = ad.select_one("h2 a.a-link-normal, a.a-link-normal")
            link = None
            if link_el and link_el.get("href"):
                link = "https://www.amazon.com" + link_el["href"]

            results.append({
                "keyword": keyword,
                "position": position,
                "title": title,
                "price": price,
                "link": link,
            })
        except Exception as e:
            print(f"Skipped a card: {e}")
    return results

Le sélecteur qui isole les annonces est le coeur de ce scraper. .AdHolder div[data-asin] correspond aux cartes sponsorisées tout en laissant les résultats organiques intacts, donc parse_ads ne voit que des emplacements PPC. Le prix vient du span.a-offscreen caché à l'intérieur du bloc a-price d'Amazon, qui contient la valeur numérique propre, et le titre est lu depuis l'ancre d'en-tête de la carte avec un sélecteur de secours pour les mises en page qui l'exposent différemment. enumerate(..., start=1) enregistre la position de chaque annonce dans l'ordre des résultats, ce qui transforme une liste plate en intelligence d'emplacement : la position 1 est une enchère en haut de page, les numéros inférieurs sont de l'immobilier plus coûteux. Chaque champ manquant se dégrade vers une chaîne sentinelle ou None plutôt que de faire planter la boucle. Si vous voulez un rappel sur la syntaxe des sélecteurs elle-même, le guide sur comment utiliser BeautifulSoup en Python la couvre en profondeur.

Les sélecteurs évoluent

Les noms de classe et la structure des cartes d'Amazon changent sans préavis. Le marqueur AdHolder, le bloc de prix a-price et l'ancre d'en-tête ci-dessus sont un modèle de départ, pas un contrat. Quand les titres ou prix reviennent comme la sentinelle "not found" pour chaque annonce, réinspectez une carte sponsorisée en direct dans les outils de développement de votre navigateur et mettez à jour le sélecteur. La maintenance périodique des sélecteurs est normale pour tout scraper en production, pas le signe que quelque chose est cassé.

Étape 3 : Assembler et analyser le mot-clé

Maintenant reliez la récupération et l'analyse en un seul script exécutable, puis ajoutez la valeur ajoutée : une petite analyse qui transforme la liste brute d'annonces en intelligence concurrentielle. Récupérez la page de recherche rendue, isolez les cartes sponsorisées et chargez les enregistrements dans un DataFrame pandas pour voir quels produits font de la publicité sur le mot-clé et à quels niveaux de prix.

python
import json
import pandas as pd
from bs4 import BeautifulSoup
from crawlbase import CrawlingAPI

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

def crawl(page_url):
    options = {"page_wait": 2000, "ajax_wait": "true"}
    response = api.get(page_url, options)
    if response["status_code"] == 200:
        return response["body"].decode("latin1")
    print(f"Request failed: {response['status_code']}")
    return None

def parse_ads(html, keyword):
    soup = BeautifulSoup(html, "html.parser")
    ads = soup.select(
        '.AdHolder div[data-asin], '
        'div[data-asin][data-component-type="s-search-result"].AdHolder'
    )
    results = []
    for position, ad in enumerate(ads, start=1):
        try:
            price_el = ad.select_one("span.a-price span.a-offscreen")
            price = price_el.text.strip() if price_el else "Price not found"
            title_el = ad.select_one(
                "div.a-section h2 a.a-link-normal span, "
                "div.a-section a.a-link-normal span.a-offscreen"
            )
            title = title_el.text.strip() if title_el else "Title not found"
            link_el = ad.select_one("h2 a.a-link-normal, a.a-link-normal")
            link = None
            if link_el and link_el.get("href"):
                link = "https://www.amazon.com" + link_el["href"]
            results.append({
                "keyword": keyword,
                "position": position,
                "title": title,
                "price": price,
                "link": link,
            })
        except Exception as e:
            print(f"Skipped a card: {e}")
    return results

def analyze(ads):
    if not ads:
        print("No sponsored ads found for this keyword.")
        return
    df = pd.DataFrame(ads)
    print(f"Sponsored placements found: {len(df)}")
    print("\nTop-of-page advertisers:")
    print(df[["position", "title", "price"]].head())
    return df

def main():
    keyword = "headphones"
    search_url = f"https://www.amazon.com/s?k={keyword}"
    html = crawl(search_url)
    if not html:
        return
    ads = parse_ads(html, keyword)
    print(json.dumps(ads, indent=2))
    df = analyze(ads)
    if df is not None:
        df.to_csv("amazon_ppc_ads.csv", index=False)

if __name__ == "__main__":
    main()

L'étape analyze est ce qui fait de ceci un outil d'intelligence publicitaire plutôt qu'un simple vidage brut. Charger les enregistrements dans un DataFrame vous permet de trier par position pour voir qui remporte les premières enchères, de regrouper par prix pour lire la bande de prix concurrentielle, et d'écrire le tout dans amazon_ppc_ads.csv pour le suivi dans le temps. Exécutez le même mot-clé selon un calendrier et les différences vous indiquent quand un nouveau concurrent entre dans l'enchère ou qu'un existant change sa priorité d'enchère. Si vous souhaitez alimenter ces prix dans un modèle plus large, le guide sur l'utilisation du scraping web pour l'intelligence des prix montre où ce type de données va ensuite.

À quoi ressemble la sortie

Exécutez le script complet avec python scraper.py et vous obtenez une liste propre d'enregistrements sponsorisés, un par annonce, plus le CSV et un court résumé. La forme JSON ressemble à ceci :

json
[
  {
    "keyword": "headphones",
    "position": 1,
    "title": "Wireless Bluetooth Headphones, Over-Ear, 40H Playtime",
    "price": "$39.99",
    "link": "https://www.amazon.com/dp/..."
  },
  {
    "keyword": "headphones",
    "position": 2,
    "title": "Noise Cancelling Headphones, Wired and Wireless",
    "price": "$59.95",
    "link": "https://www.amazon.com/dp/..."
  }
]

Chaque enregistrement porte le mot-clé, la position sur la page, le titre et le prix annoncés, et un lien vers la page produit. C'est suffisant pour répondre à la question centrale d'intelligence concurrentielle : pour tout terme qui vous intéresse, quels produits paient pour être en tête, et dans quelle bande de prix se font-ils concurrence.

Mise à l'échelle sur plusieurs mots-clés et pages

Un mot-clé sur une page est une démonstration. La vraie valeur vient de l'exécution d'une liste de mots-clés selon un calendrier et du suivi de l'évolution du groupe d'annonceurs. Parcourez vos termes cibles, extrayez les cartes sponsorisées pour chacun et concaténez les résultats pour qu'un seul CSV contienne l'image concurrentielle complète.

python
import time

def scrape_keywords(keywords):
    all_ads = []
    for keyword in keywords:
        url = f"https://www.amazon.com/s?k={keyword}"
        html = crawl(url)
        if not html:
            continue
        ads = parse_ads(html, keyword)
        all_ads.extend(ads)
        print(f"{keyword}: {len(ads)} sponsored placements")
        time.sleep(2)
    return all_ads

keywords = ["headphones", "wireless earbuds", "bluetooth speaker"]
ads = scrape_keywords(keywords)

Le time.sleep(2) entre les mots-clés rythme l'exécution pour que vous ne marteliez pas la recherche en boucle serrée, ce qui est le moyen le plus rapide d'être limité. Pour parcourir des pages de résultats supplémentaires pour un seul mot-clé, Amazon pagine la recherche avec un paramètre &page= sur l'URL, donc vous l'incrémentez de la même façon et vous arrêtez quand une page ne retourne aucune carte sponsorisée. Gardez le plafond modeste : les emplacements publicitaires les plus précieux se trouvent de toute façon sur les une ou deux premières pages.

Rester non bloqué

Même avec le rendu géré, Amazon surveille le trafic à la forme d'un scraper. Quelques habitudes maintiennent une exécution saine, et elles s'appliquent à toute cible commerciale difficile.

  • Rythmez vos requêtes. Répartissez les requêtes avec un délai entre les mots-clés et les pages au lieu de crawler à pleine vitesse. Le time.sleep dans la boucle est le plancher, pas le plafond.
  • Misez sur la rotation. Un pool d'IP résidentielles répartit les requêtes sur de nombreuses adresses d'utilisateurs réels pour qu'aucune ne déclenche une limite de débit. La Crawling API gère cela pour vous ; si vous construisez votre propre pile, c'est la partie à soigner.
  • Lisez les codes de statut. Une exécution qui commence à retourner des défis ou des erreurs vous indique que le débit ou le niveau d'IP actuel n'est plus suffisant. Traitez cela comme un signal de ralentissement, pas comme du bruit à ignorer.

Pour le guide global sur le maintien d'un scraper sain contre des sites défendus, voir comment scraper des sites web sans être bloqué.

Est-il légal de scraper les données publicitaires Amazon ?

La question de savoir si le scraping Amazon est autorisé dépend des Conditions d'utilisation d'Amazon, de votre juridiction et de l'usage que vous faites des données. Les conditions d'Amazon restreignent l'accès automatisé, de sorte que le scraping peut aller à l'encontre de ces conditions quelle que soit la prudence de vos outils. Aucun code ici ne change cela ; il fait simplement fonctionner la partie technique. Lisez les Conditions d'utilisation d'Amazon et son robots.txt, et traitez les deux comme les limites de ce que vous collectez.

Quelques lignes à tenir. Le titre sponsorisé, le prix, la position et le lien produit que ce scraper extrait sont des données publiques : tout le monde effectuant la même recherche voit les mêmes annonces, sans compte requis. Restez sur cette surface publique orientée annonces. Respectez les attentes de débit déclarées d'Amazon et maintenez votre volume de requêtes suffisamment bas pour ne pas solliciter ses serveurs. Évitez les données personnelles, y compris tout ce lié à des acheteurs, évaluateurs ou vendeurs identifiables au-delà de ce qui est listé publiquement sur une page de résultats, et ne redistribuez pas en gros les images ou descriptions de produits protégées par le droit d'auteur. Utiliser des données publicitaires pour votre propre analyse concurrentielle est une chose très différente de republier le contenu d'Amazon.

Ce guide est délibérément limité aux emplacements sponsorisés publics sur les pages de recherche car c'est la ligne qui rend le travail défendable. Il ne couvre pas ce qui est derrière une connexion, les données de Seller Central ou de gestion de campagnes, les indicateurs de compte privés d'un autre annonceur, les flux de paiement ou toute tentative de contourner l'authentification. Les données "Sponsorisé" sur la page que vous collectez ici sont l'empreinte publicitaire publique du concurrent, pas ses chiffres de campagne internes. Pour un accès sous licence ou en volume, Amazon propose des API officielles de publicité et de produits, et c'est le bon outil quand vous avez besoin de grands volumes, d'une structure garantie ou de droits commerciaux. Si votre projet a besoin de plus que des emplacements publicitaires publics, une API officielle ou un accord de données est la bonne voie, pas un scraper plus sophistiqué.

Récapitulatif

Points clés

  • Les emplacements sponsorisés sont une intelligence concurrentielle publique. Quels produits font de la publicité sur un mot-clé, à quelle position et quel prix, est visible par tout acheteur et révèle une vraie stratégie publicitaire.
  • La recherche Amazon est rendue par JavaScript. Une récupération brute retourne une coquille vide, donc vous devez rendre la page avec le token JS avant qu'une carte sponsorisée existe à analyser.
  • Le sélecteur AdHolder isole les annonces. Cibler .AdHolder div[data-asin] ne collecte que les cartes PPC, et les sélecteurs a-price et d'ancre d'en-tête extraient le titre, le prix et le lien de chacune.
  • La position transforme une liste en données d'emplacement. Enregistrer l'ordre de chaque annonce avec enumerate, puis charger dans pandas, vous permet de suivre les enchères en haut de page et les bandes de prix sur les mots-clés dans le temps.
  • Restez sur les données publiques. Respectez les Conditions d'utilisation et robots.txt d'Amazon, préférez une API officielle Amazon pour les données sous licence ou en volume, et ne touchez jamais aux comptes, aux internes des campagnes ou aux informations personnelles.

Foire aux questions

Qu'est-ce que la publicité PPC Amazon ?

La publicité PPC (pay-per-click) Amazon permet aux vendeurs et aux marques de promouvoir des produits dans les résultats de recherche et les pages produits d'Amazon. Ces Sponsored Products sont étiquetés "Sponsorisé" ou "Annonce", et l'annonceur ne paie que quand un acheteur clique. Comme les annonces sont pilotées par enchères, l'ensemble des produits qui font de la publicité sur un mot-clé donné est une lecture en direct des marques qui dépensent pour concurrencer ce terme.

Pourquoi une requête brute ne retourne-t-elle aucune annonce d'Amazon ?

Parce qu'Amazon charge sa grille de recherche dynamiquement avec JavaScript et Ajax. Le HTML initial est largement une coquille, donc une requête HTTP brute retourne le statut 200 avec les cartes sponsorisées et organiques toutes deux vides. Pour obtenir de vraies données, vous devez d'abord rendre la page, ce que le token JS de la Crawling API gère pour vous avant que BeautifulSoup l'analyse.

Comment ne scraper que les annonces sponsorisées et non les résultats organiques ?

Amazon enveloppe les cartes sponsorisées dans des conteneurs portant une classe AdHolder. Sélectionner sur .AdHolder div[data-asin] ne correspond qu'à ces cartes, donc votre parseur collecte les emplacements PPC et ignore entièrement les annonces organiques. Depuis chaque carte d'annonce, vous lisez ensuite le titre depuis son ancre d'en-tête, le prix depuis le bloc a-price et le href pour le lien produit.

Mon titre ou prix revient comme "not found". Qu'est-ce qui a changé ?

Presque certainement le balisage d'Amazon. Ses noms de classe et sa structure de cartes changent sans préavis, et les sélecteurs a-price ou d'ancre d'en-tête ci-dessus peuvent cesser de correspondre. Réinspectez une carte sponsorisée en direct dans les outils de développement de votre navigateur, confirmez le wrapper AdHolder et les sélecteurs de prix et de titre internes, et mettez-les à jour. La maintenance périodique des sélecteurs est normale pour tout scraper en production.

Que puis-je faire avec les données publicitaires Amazon extraites ?

Suivre la publicité des concurrents dans le temps : quels produits entrent ou quittent l'ensemble sponsorisé pour un mot-clé, où ils se placent et la bande de prix dans laquelle ils se font concurrence. Exécutez les mêmes mots-clés selon un calendrier et les différences font apparaître les nouveaux entrants et les changements de priorité d'enchère. Les champs de position et de prix alimentent directement les tableaux de bord d'intelligence publicitaire et de prix.

Ai-je besoin du token normal ou du token JS pour Amazon ?

Le token JS. Le token normal récupère le HTML statique, qui sur Amazon est la même coquille vide qu'une récupération brute retourne. Le token JS rend la page dans un vrai navigateur avant de retourner le HTML, de sorte que les cartes sponsorisées sont présentes quand votre parseur s'exécute. Associez-le aux options page_wait et ajax_wait pour que la grille dynamique ait le temps de finir de se charger.

Commencer à construire

Crawlez n'importe quel site à grande échelle, sans combattre l'infrastructure.

Crawlbase gère les proxies, les empreintes et les CAPTCHA afin que votre équipe livre des pipelines de données au lieu de maintenir la plomberie de crawl. 1 000 requêtes gratuites, sans carte requise.

En libre-service · Sans appel commercial requis · Volumes de crawl entreprise disponibles