Pourquoi Scrape Amazon Données de produit?
Amazon accueille plus de 350 millions de produits sur des dizaines de marchés mondiaux. Pour les entreprises de commerce électronique, ces données sont inestimables : prix des concurrents, descriptions de produits, avis clients, classement des meilleures ventes et signaux d'inventaire peuvent tous conduire à des décisions plus intelligentes. Que vous construisiez une outil de suivi des prix, la réalisation d'études de marché, ou la formation d'un modèle d'IA, les données de produit Amazon est l'une des cibles de valeur la plus élevée sur le web.
Le défi est qu'Amazon investit massivement dans les défenses anti-bots. Sans la bonne stratégie de remplacement, vos racleurs frapperont les CAPTCHA, les blocs IP et les réponses trompeuses en quelques minutes. Ce guide vous accompagne dans l'architecture, le code et la configuration proxy nécessaires pour racler Amazon de façon fiable à l'échelle.
Les Protections Anti-Bot d'Amazon
Avant d'écrire une seule ligne de code, vous devez comprendre ce que vous êtes contre. Amazon utilise un système de détection en couches qui analyse chaque demande entrante.
Demande d'impression digitale
Amazon inspecte les en-têtes HTTP, les empreintes digitales TLS et demande de commande. Les demandes manquantes en-têtes standard du navigateur ou utilisant des signatures bot connues sont signalées immédiatement. Les Accept-Language, Accept-Encodinget User-Agent Les en-têtes doivent être cohérents et réalistes.
Analyse comportementale
Les demandes arrivant à un taux qu'aucun humain ne pourrait atteindre, ou suivant des modèles prévisibles (p. ex., des NASS séquentiels), limitent le taux de déclenchement. Amazon suit le comportement de session sur plusieurs requêtes, donc chaque IP doit se comporter comme un véritable shopper.
Défis de la CAPTCHA
Lorsque Amazon soupçonne un trafic automatisé, il dessert une page CAPTCHA au lieu de données produit. Les IP résidentielles reçoivent beaucoup moins de CAPTCHA que les IP datacenter parce qu'elles partagent les mêmes piscines IP que les véritables acheteurs Amazon. Pour un examen plus approfondi des méthodes de détection, voir notre guide sur comment les systèmes anti-bot détectent les proxies.
Takeaway clé: Les proxies résidentielles avec rotation appropriée sont essentielles pour le grattage soutenu d'Amazon. Les détecteurs de datacenter seront bloqués en quelques heures.
Données que vous pouvez extraire d'Amazon
| Point de données | Page source | Cas d'utilisation |
|---|---|---|
| Titre du produit, images, description | Page de détail du produit | Catalogue, analyse de contenu |
| Prix courant, prix de vente, prix de catalogue | Détail du produit / liste des offres | Contrôle des prix, révision |
| Avis et notes des clients | Révision des pages | Analyse des sentiments, recherche de produits |
| Classement des meilleures ventes (BSR) | Page de détail du produit | Estimation de la demande du marché |
| Acheter Box seller, informations d'expédition | Page de détail du produit | Suivi des concurrents |
| Classement des résultats de la recherche | Pages des résultats de la recherche | SEO et optimisation de la publicité |
| Hiérarchie des catégories | Parcourir les nœuds | Cartographie taxonomique |
Configuration de votre mandataire
La passerelle proxyHat résidentielle fournit la diversité IP et la géo-ciblage nécessaires pour le grattage d'Amazon. Connectez-vous à travers notre passerelle et faites pivoter les IP automatiquement sur chaque demande ou maintenez des sessions collantes au besoin.
Connexion de base
# HTTP proxy
http://USERNAME:PASSWORD@gate.proxyhat.com:8080
# With geo-targeting (US Amazon)
http://USERNAME-country-US:PASSWORD@gate.proxyhat.com:8080
# With sticky session (maintain same IP for a browsing session)
http://USERNAME-session-amz001:PASSWORD@gate.proxyhat.com:8080Pour le grattage d'Amazon, nous vous recommandons de cibler le pays correspondant au marché que vous raclez. Tu as fait des recherches sur Amazon.de ? Utiliser des IP allemands. Utilisez des IP japonaises. Vérifier lieux disponibles pour la liste complète.
Mise en œuvre de Python
Voici un racleur Python complet pour les données de produits Amazon Python SDK de ProxyHat avec les demandes et BeautifulSoup.
Grattoir de produit de base
import requests
from bs4 import BeautifulSoup
import random
import time
import json
PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
]
def get_amazon_product(asin, marketplace="com"):
"""Scrape product data from Amazon by ASIN."""
url = f"https://www.amazon.{marketplace}/dp/{asin}"
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
}
proxies = {
"http": PROXY_URL,
"https": PROXY_URL,
}
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
if response.status_code != 200:
return None
soup = BeautifulSoup(response.text, "html.parser")
product = {
"asin": asin,
"title": extract_title(soup),
"price": extract_price(soup),
"rating": extract_rating(soup),
"review_count": extract_review_count(soup),
"bsr": extract_bsr(soup),
"availability": extract_availability(soup),
}
return product
def extract_title(soup):
el = soup.find("span", {"id": "productTitle"})
return el.get_text(strip=True) if el else None
def extract_price(soup):
el = soup.find("span", {"class": "a-price-whole"})
if el:
fraction = soup.find("span", {"class": "a-price-fraction"})
price = el.get_text(strip=True).rstrip(".")
if fraction:
price += "." + fraction.get_text(strip=True)
return price
return None
def extract_rating(soup):
el = soup.find("span", {"class": "a-icon-alt"})
if el and "out of" in el.get_text():
return el.get_text(strip=True).split(" ")[0]
return None
def extract_review_count(soup):
el = soup.find("span", {"id": "acrCustomerReviewCount"})
return el.get_text(strip=True) if el else None
def extract_bsr(soup):
el = soup.find("th", string=lambda t: t and "Best Sellers Rank" in t)
if el:
return el.find_next("td").get_text(strip=True)
return None
def extract_availability(soup):
el = soup.find("div", {"id": "availability"})
return el.get_text(strip=True) if el else None
# Example usage
if __name__ == "__main__":
asins = ["B0CHX3QBCH", "B0D5BKRY4R", "B0CRMZHDG7"]
for asin in asins:
product = get_amazon_product(asin)
if product:
print(json.dumps(product, indent=2))
time.sleep(random.uniform(2, 5)) # Random delay between requestsManipulation Pagination pour les résultats de recherche
def scrape_search_results(keyword, max_pages=5):
"""Scrape Amazon search results with pagination."""
results = []
for page in range(1, max_pages + 1):
url = f"https://www.amazon.com/s?k={keyword}&page={page}"
headers = {
"User-Agent": random.choice(USER_AGENTS),
"Accept-Language": "en-US,en;q=0.9",
}
proxies = {"http": PROXY_URL, "https": PROXY_URL}
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
if response.status_code != 200:
print(f"Page {page}: status {response.status_code}")
break
soup = BeautifulSoup(response.text, "html.parser")
items = soup.find_all("div", {"data-component-type": "s-search-result"})
for item in items:
asin = item.get("data-asin", "")
title_el = item.find("h2")
price_el = item.find("span", {"class": "a-price-whole"})
results.append({
"asin": asin,
"title": title_el.get_text(strip=True) if title_el else None,
"price": price_el.get_text(strip=True) if price_el else None,
"page": page,
})
time.sleep(random.uniform(3, 7))
return resultsMise en œuvre de Node.js
Pour les projets Node.js, utiliser Le nœud SDK de ProxyHat avec glorio pour l'analyse.
const axios = require("axios");
const cheerio = require("cheerio");
const { HttpsProxyAgent } = require("https-proxy-agent");
const PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080";
const agent = new HttpsProxyAgent(PROXY_URL);
const USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
];
async function scrapeProduct(asin, marketplace = "com") {
const url = `https://www.amazon.${marketplace}/dp/${asin}`;
const { data } = await axios.get(url, {
httpsAgent: agent,
headers: {
"User-Agent": USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],
"Accept-Language": "en-US,en;q=0.9",
Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
},
timeout: 30000,
});
const $ = cheerio.load(data);
return {
asin,
title: $("#productTitle").text().trim() || null,
price: $(".a-price-whole").first().text().trim() || null,
rating: $(".a-icon-alt").first().text().trim().split(" ")[0] || null,
reviewCount: $("#acrCustomerReviewCount").text().trim() || null,
availability: $("#availability").text().trim() || null,
};
}
async function scrapeMultiple(asins) {
const results = [];
for (const asin of asins) {
try {
const product = await scrapeProduct(asin);
results.push(product);
console.log(`Scraped: ${product.title}`);
} catch (err) {
console.error(`Failed ${asin}: ${err.message}`);
}
// Random delay 2-5 seconds
await new Promise((r) => setTimeout(r, 2000 + Math.random() * 3000));
}
return results;
}
// Usage
scrapeMultiple(["B0CHX3QBCH", "B0D5BKRY4R"]).then((results) => {
console.log(JSON.stringify(results, null, 2));
});Stratégies de rotation par procuration pour Amazon
La détection d'Amazon devient plus agressive, plus les demandes proviennent d'une seule IP. Voici les stratégies de rotation qui fonctionnent le mieux.
Rotation par demande
Pour les recherches de produits en vrac où chaque demande est indépendante, faites pivoter les IP sur chaque demande. Ceci est le comportement par défaut avec la passerelle de ProxyHat : chaque nouvelle connexion obtient une nouvelle IP résidentielle.
Rotation par session
Lors de la suppression des résultats de recherche sur plusieurs pages, maintenez la même IP pour toute la session. Changer d'IPs mi-pagination semble suspect pour Amazon. Utilisez les séances collantes de ProxyHat :
# Maintain same IP for up to 10 minutes
http://USERNAME-session-search001:PASSWORD@gate.proxyhat.com:8080Rotation géographique
Correspondez à votre emplacement proxy au marché Amazon. L'accès amazon.de d'une IP américaine soulève des drapeaux. Pays cibles:
# German IPs for amazon.de
http://USERNAME-country-DE:PASSWORD@gate.proxyhat.com:8080
# Japanese IPs for amazon.co.jp
http://USERNAME-country-JP:PASSWORD@gate.proxyhat.com:8080
# UK IPs for amazon.co.uk
http://USERNAME-country-GB:PASSWORD@gate.proxyhat.com:8080Pour en savoir plus sur les techniques de rotation, consultez notre guide détaillé sur les meilleurs proxies pour le grattage de toile en 2026.
Meilleures Pratiques pour le Scraping Amazon
- randomiser les retards : Utiliser des intervalles aléatoires de 2 à 7 secondes entre les requêtes. Ne grattez jamais à un taux fixe.
- Rotation des agents utilisateurs : Maintenez une réserve d'au moins 10 chaînes User-Agent de navigateur réalistes et faites-les tourner.
- Poignez les CAPTCHA avec grâce : Si vous recevez une réponse CAPTCHA, reculez pendant 30-60 secondes et réessayez avec une nouvelle IP.
- Respecter robots.txt: Bien qu'elles ne soient pas juridiquement contraignantes dans la plupart des pays, les directives Robots.txt démontrent la bonne foi.
- Utiliser des procurations résidentielles : Les IP de Datacenter sont facilement identifiés et bloqués par Amazon. Proxies résidentielles partager les mêmes gammes IP que les vrais acheteurs.
- Surveiller les taux de réussite : Suivez votre taux HTTP 200. Si elle tombe en dessous de 90 %, réduisez la concordance ou ajustez votre stratégie de rotation.
- Réponses de cache : Ne grattez jamais la même URL deux fois si les données n'ont pas changé. Cache les données sur les produits et les intervalles de rafraîchissement en fonction de la fréquence des variations des prix.
Écailler votre gratte-ciel amazonien
En passant de centaines à des millions de produits, l'architecture compte.
Architecture en file d'attente
Utilisez une file d'attente de messages (Redis, RabbitMQ ou SQS) pour gérer votre liste ASIN. Les processus ouvriers tirent les ASINs de la file d'attente, les grattent et poussent les résultats vers un magasin de données. Cela découple l'horaire de la grattage et vous permet d'écheller les travailleurs indépendamment.
Contrôle des devises
Commencez par 5-10 demandes simultanées et augmentez graduellement tout en surveillant les taux de réussite. Avec la piscine résidentielle de ProxyHat, vous pouvez généralement exécuter 20-50 sessions simultanées sans problèmes. Voir notre page de cas d'utilisation de grattage web pour les configurations recommandées.
Pipeline de données
Stocker le HTML brut dans un magasin d'objets (S3) pour le retraitement, et les données analysées dans PostgreSQLTM ou un entrepôt de données. Cette séparation vous permet de corriger les bogues d'analyse sans re-scraping.
Conseil pro : Les pages de produits Amazon changent fréquemment de structure. Stockez le HTML brut afin que vous puissiez réextraire les données lorsque les sélecteurs changent, sans frapper Amazon à nouveau.
Considérations juridiques et éthiques
Dans la plupart des pays, le grattage du Web est légal pour les données accessibles au public, mais les pratiques responsables sont importantes. Recueillir uniquement les données qui sont affichées publiquement. Ne tentez pas d'accéder aux pages authentifiées, aux comptes de vendeurs ou aux données privées. Limitez vos demandes pour éviter de dégrader le service d'Amazon pour les autres utilisateurs. Conservez uniquement les données dont vous avez besoin et traitez-les conformément aux lois applicables en matière de confidentialité.
A emporter des clés
- Le système anti-bot d'Amazon nécessite des procurations résidentielles avec géo-cible pour correspondre au marché cible.
- Roter les IP par demande pour les recherches en vrac; utiliser des sessions collantes pour la navigation paginée.
- Randomiser les retards, les utilisateurs-agents et les modèles de demande pour éviter la détection.
- Construire une architecture basée sur la file d'attente pour l'échelle au-delà de quelques milliers de produits.
- Stocker le HTML brut pour la résilience contre les changements de sélecteur.
- Utilisation Proxies résidentielles de ProxyHat pour des taux de succès élevés sur tous les marchés amazoniens.
Prêt à commencer à gratter les données Amazon? Notre Guide de suppression des données sur le commerce électronique couvre la stratégie complète, et vous pouvez explorer l'infrastructure de proxyHat page de prix.






