La plupart des débutants en parsing commencent par un crawl complet du site : ils accèdent à la page d'accueil, collectent tous les liens, passent par chacun d'eux, collectent à nouveau des liens - et ainsi de suite des milliers de fois. Cela consomme des proxies, du temps et se termine souvent par un ban. Il existe une méthode plus simple et moins coûteuse : presque tous les grands sites, y compris Wildberries, Ozon et Avito, ont déjà une carte de toutes les pages - sitemap.xml. Voyons comment la trouver, la lire et l'utiliser à la place de milliers de requêtes inutiles.
Qu'est-ce que sitemap.xml et pourquoi est-il important pour les parseurs
Sitemap.xml est un fichier que le site crée pour les moteurs de recherche comme Google et Yandex. Il énumère toutes les pages que le propriétaire du site souhaite faire indexer : fiches produits, catégories, articles de blog. En gros, c'est une liste prête d'URL que le site vous fournit - pas besoin de naviguer manuellement à travers les liens, de cliquer sur la pagination ou de déchiffrer la logique de navigation.
Pour les vendeurs qui surveillent les prix des concurrents sur Wildberries ou Ozon, cela signifie une chose : au lieu de parcourir des milliers de catégories et de pages de pagination, vous pouvez obtenir immédiatement une liste de toutes les fiches produits en une seule requête à sitemap. Pour les marketeurs qui collectent une base d'URL pour analyser le contenu des concurrents, cela fait gagner des heures de travail manuel. Pour les arbitragistes qui analysent les pages de destination des concurrents pour étudier les créatifs, sitemap montre toutes les pages du site d'un coup.
Un point important : toutes les pages ne figurent pas dans le sitemap. Parfois, les pages avec des filtres, des promotions temporaires ou des pages avec des paramètres dans l'URL ne sont pas incluses. Donc, le sitemap n'est pas toujours une couverture à 100 % du site, mais généralement 80-95 % des pages utiles dont vous avez besoin pour le catalogue ou la surveillance.
Crawl complet vs sitemap-first : comparaison des coûts
La différence entre les approches est significative si l'on considère non pas en "tentatives" abstraites, mais en ressources réelles : nombre de requêtes, consommation de trafic proxy et temps jusqu'au résultat. Voici une comparaison sur l'exemple de la collecte d'un catalogue de 50 000 fiches produits.
| Paramètre | Crawl complet du site | Parsing via sitemap |
|---|---|---|
| Requêtes pour collecter les URL | 15 000–20 000 (catégories, pagination, filtres) | 50–300 (uniquement les fichiers sitemap) |
| Temps pour collecter la liste des URL | 4–8 heures | 15–30 minutes |
| Risque de blocage IP | Élevé en raison du volume de requêtes pour la navigation | Faible, beaucoup moins de requêtes |
| Charge sur le trafic proxy | Élevée, besoin d'un grand pool d'IP | Minimale, peut se contenter d'un petit pool |
| Complexité de la logique du parseur | Élevée, besoin d'analyser la navigation | Faible, analyse de la structure XML |
Le chiffre "10 fois moins cher" du titre n'est pas une exagération. Si un crawl complet nécessite 15-20 000 requêtes juste pour établir la liste des pages, et que le sitemap fournit la même liste avec 50-300 requêtes, l'économie sur le trafic proxy et le temps est exponentielle. Cependant, vous devrez tout de même télécharger les fiches produits séparément - mais vous savez exactement quelles URL télécharger et vous ne gaspillez pas de ressources sur des pages vides, des doublons et des liens inutiles.
Comment trouver sitemap.xml sur n'importe quel site
La première et la plus simple méthode consiste à ajouter /sitemap.xml au domaine du site. Par exemple, pour vérifier, essayez d'ouvrir dans votre navigateur une adresse du type https://example.com/sitemap.xml. Cela fonctionnera pour la plupart des sites, y compris de nombreux magasins en ligne sur des CMS populaires.
Si rien n'est trouvé à cette adresse, vérifiez le fichier robots.txt - il se trouve presque toujours à l'adresse /robots.txt et contient dans la plupart des cas la ligne Sitemap: https://example.com/sitemap_index.xml. C'est la méthode officielle par laquelle les sites informent les moteurs de recherche où chercher la carte. Pour les grandes marketplaces comme Wildberries et Ozon, les cartes du site sont souvent divisées en dizaines de fichiers et indiquées précisément via robots.txt.
Une troisième option consiste à rechercher des mentions dans des systèmes comme Google Search Console (si vous avez accès à votre site) ou à utiliser des scanners de site spécialisés qui trouvent eux-mêmes tous les fichiers sitemap. Pour les sites concurrents, les deux premières méthodes suffisent généralement - le robots.txt n'est pratiquement jamais caché aux yeux du public, c'est un fichier public.
Conseil :
Les noms de fichiers sitemap ne sont pas toujours standards. On trouve des variantes comme sitemap_index.xml, sitemap-products.xml, product-sitemap.xml, etc. Commencez toujours par robots.txt - il indiquera les chemins exacts.
Structure de sitemap des marketplaces : index et cartes imbriquées
Les petits sites ont généralement un seul fichier sitemap.xml avec toutes les URL. Mais pour les grands catalogues, comme Wildberries, Ozon ou Avito, avec des millions de pages, un seul fichier XML de cette taille serait peu pratique. C'est pourquoi ils utilisent ce qu'on appelle un index de sitemap - un fichier de sommaire qui renvoie à des dizaines ou des centaines de fichiers sitemap distincts, classés par catégories, dates ou simplement en lots de 10-50 000 URL.
La structure ressemble à ceci : d'abord, vous ouvrez le fichier d'index principal, où vous trouvez une liste de liens vers les sitemaps enfants, par exemple sitemap-products-1.xml, sitemap-products-2.xml, etc. Ensuite, vous devez télécharger chacun de ces fichiers et en extraire les URL finales des fiches produits. C'est un processus à deux niveaux, mais il est tout de même beaucoup plus rapide que de naviguer manuellement sur le site.
Parfois, les fichiers sitemap enfants sont compressés au format gzip (extension .xml.gz) - c'est une pratique standard pour économiser de l'espace sur le serveur. Si le script télécharge un fichier et voit des caractères illisibles au lieu de XML, il est probable qu'il faille d'abord décompresser le contenu avant de le parser.
Extraction étape par étape des URL à partir de sitemap
Pour ceux qui utilisent des outils de parsing no-code, la plupart des parseurs modernes de catalogues de marketplaces savent déjà lire les sitemaps automatiquement - il suffit d'indiquer l'URL racine du site, et l'outil trouvera lui-même le robots.txt, le sitemap index et collectera la liste de toutes les fiches. Mais si vous travaillez avec un développeur ou écrivez un petit script vous-même, la logique de fonctionnement est simple, et voici un exemple en Python :
import requests
import gzip
from io import BytesIO
from lxml import etree
def get_sitemap_urls(sitemap_url, proxies=None):
response = requests.get(sitemap_url, proxies=proxies, timeout=15)
content = response.content
# Décompression gzip, si le fichier est compressé
if sitemap_url.endswith('.gz'):
content = gzip.decompress(content)
root = etree.fromstring(content)
namespace = {'ns': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
# Si c'est un index de sitemap - collecter les liens vers les cartes enfants
sub_sitemaps = root.findall('.//ns:sitemap/ns:loc', namespace)
if sub_sitemaps:
all_urls = []
for sub in sub_sitemaps:
all_urls.extend(get_sitemap_urls(sub.text, proxies))
return all_urls
# Si c'est un sitemap normal - collecter les URL finales
urls = root.findall('.//ns:url/ns:loc', namespace)
return [url.text for url in urls]
proxy = {
"http": "http://user:pass@proxy_host:port",
"https": "http://user:pass@proxy_host:port"
}
urls = get_sitemap_urls("https://example.com/sitemap_index.xml", proxies=proxy)
print(f"URL trouvées : {len(urls)}")
Ce script parcourt récursivement le fichier d'index, télécharge chaque carte enfant et collecte tous les liens finaux dans une seule liste. À la sortie, vous obtenez une liste complète des URL des fiches produits sans un seul passage inutile par la navigation du site.
Filtrage des pages nécessaires par modèles d'URL
Après avoir obtenu la liste complète des URL à partir du sitemap, il est presque toujours nécessaire de la filtrer. Dans un fichier sitemap d'une marketplace, on peut trouver des fiches produits, des pages de catégories, des articles de blog, des pages de marques et des pages de service. Vous aurez probablement besoin uniquement des fiches produits d'une certaine catégorie.
Pour le filtrage, on utilise généralement des modèles d'URL. Par exemple, si les fiches produits sur le site ont la forme /catalog/product/12345, tandis que les catégories ressemblent à /catalog/category/electronics, il est facile de séparer l'un de l'autre par une simple comparaison des segments de chemin. Pour des cas plus complexes, où la structure de l'URL n'est pas aussi évidente, on utilise des expressions régulières - elles permettent de définir un modèle une fois et de filtrer instantanément des centaines de milliers de liens.
Il est également utile de regarder les balises <lastmod> à l'intérieur du sitemap - elles montrent la date de la dernière modification de la page. Si vous n'avez pas besoin d'un catalogue complet, mais seulement des produits mis à jour au cours de la dernière semaine (par exemple, pour surveiller les nouvelles positions des concurrents), vous pouvez filtrer les URL en fonction de cette date et ignorer les pages qui n'ont pas changé depuis des mois.
Configuration de proxy pour le téléchargement massif de cartes de site
Bien que le nombre de requêtes au sitemap soit beaucoup plus faible que lors d'un crawl complet, des sites comme Wildberries et Ozon surveillent toujours l'activité suspecte - des requêtes trop fréquentes depuis une seule IP, des User-Agent atypiques, l'absence d'en-têtes de navigateur. Donc, même pour télécharger les fichiers sitemap, il est conseillé d'utiliser des proxies, surtout si vous prévoyez une surveillance régulière et non une collecte ponctuelle du catalogue.
Pour télécharger les fichiers XML sitemap, il suffit généralement d'utiliser des proxies de datacenter - ils sont rapides et peu coûteux, et comme il y a peu de requêtes au sitemap, les sites appliquent moins souvent une protection stricte par rapport aux pages de catalogue ordinaires. Mais pour le téléchargement des fiches produits par URL collectées, où le nombre de requêtes est beaucoup plus élevé et la protection plus stricte, il est préférable de passer à des proxies résidentiels - ils utilisent de vraies IP d'utilisateurs ordinaires et sont moins susceptibles d'être bloqués par les systèmes anti-bot des marketplaces.
Si vous surveillez le catalogue à partir des versions mobiles du site ou d'une API qui ne fournit des données que pour le trafic mobile, envisagez d'utiliser des proxies mobiles - ils utilisent des IP d'opérateurs mobiles et sont considérés comme les plus fiables par la plupart des systèmes anti-fraude.
La configuration pratique dans le script ou le parseur est simple : indiquez l'hôte, le port, le nom d'utilisateur et le mot de passe du proxy dans les champs appropriés de la requête (comme montré dans l'exemple de code ci-dessus dans le paramètre proxies), ou si vous utilisez un parseur no-code prêt à l'emploi ou un navigateur anti-détection comme Dolphin Anty ou AdsPower pour vérifier manuellement la structure du site avant de configurer la collecte automatique, insérez les données du proxy dans les paramètres de profil : ouvrez l'onglet "Proxy" → choisissez le type HTTP ou SOCKS5 → insérez l'hôte, le port, le nom d'utilisateur, le mot de passe → enregistrez le profil.
Erreurs fréquentes lors de l'utilisation de sitemap
La première et la plus fréquente erreur est d'ignorer le robots.txt et d'essayer de deviner l'adresse du sitemap au hasard. C'est une perte de temps facilement évitable en consultant simplement le fichier de règles d'indexation.
La deuxième erreur est de ne pas tenir compte du fait que le sitemap peut être incomplet. Certains sites excluent délibérément des pages à faible valeur pour le SEO du sitemap, mais qui sont tout de même importantes pour la surveillance des prix - par exemple, les pages de produits non disponibles. Si, après le parsing via le sitemap, le nombre de fiches collectées est nettement inférieur à ce que vous attendiez, il est judicieux de vérifier le nombre de produits affiché par le site lui-même dans la catégorie et, si nécessaire, de compléter la collecte par un crawl ponctuel des sections manquantes.
La troisième erreur est de ne pas mettre en cache les fichiers sitemap déjà téléchargés. Si vous lancez une surveillance quotidienne, il n'est pas nécessaire de télécharger à nouveau le fichier d'index et toutes les cartes enfants à chaque fois - la plupart d'entre elles ne changent pas tous les jours. Conservez la liste des URL localement et ne mettez à jour que ce qui a réellement changé selon la date lastmod.
La quatrième erreur est d'oublier les en-têtes de requête. Même le téléchargement d'un simple fichier XML peut être bloqué si la requête ressemble à celle d'un bot : sans User-Agent, sans Accept-Language, avec des en-têtes par défaut atypiques fournis par la bibliothèque pour les requêtes. Ajouter des en-têtes de navigateur réalistes en combinaison avec des proxies réduit considérablement le risque de blocage à ce stade.
Checklist pour le lancement du parsing via sitemap
Avant de lancer une collecte complète du catalogue, passez en revue une courte liste d'étapes pour ne pas perdre de temps sur des erreurs :
- Vérifiez le robots.txt du site et trouvez l'adresse exacte du sitemap ou de l'index sitemap
- Assurez-vous que la structure du sitemap est à deux niveaux (index + cartes enfants) ou à un seul niveau
- Vérifiez si les fichiers enfants sont compressés en gzip
- Déterminez le modèle d'URL pour les pages nécessaires (fiches produits, catégories, etc.)
- Configurez le filtrage par modèle ou par date lastmod, si vous avez seulement besoin des nouvelles positions
- Connectez des proxies pour le téléchargement des fichiers sitemap et séparément pour le téléchargement des fiches elles-mêmes
- Ajoutez des en-têtes de requête réalistes (User-Agent, Accept-Language)
- Configurez le caching et la comparaison par date pour les relances de surveillance
- Comparez le nombre final d'URL avec le nombre approximatif de produits sur le site
Conclusion
L'approche sitemap-first n'est pas un hack et ne contourne pas la protection, mais utilise les informations que le site publie lui-même pour les moteurs de recherche. Au lieu de milliers de requêtes pour la navigation, les catégories et la pagination, vous obtenez une liste prête des pages nécessaires en quelques dizaines de requêtes vers des fichiers XML. Cela fait gagner du temps pour le lancement du parsing, réduit la consommation de trafic proxy et diminue considérablement le risque de blocage IP, car la charge sur le site est bien moindre que lors d'un crawl complet.
Si vous débutez dans la surveillance du catalogue de Wildberries, Ozon ou d'un autre grand site, commencez par le sitemap - vous économiserez probablement des heures de travail dès le premier lancement. Pour le téléchargement des fichiers sitemap eux-mêmes, des proxies de datacenter peu coûteux suffisent, et pour la collecte régulière de données sur les fiches produits, où le risque de blocage est plus élevé, il est judicieux de se tourner vers des proxies résidentiels - ils garantissent un fonctionnement stable du parseur sans bans fréquents sur le long terme.