Parseur de données SEO des pagesDéveloppement et personnalisation

Un parseur Python qui enregistre les données SEO des pages d’un site dans un tableau : title, description, H1, statut, canonical

Généralement prêt en 15 minutesRetouches inclusesContrôle qualité
Formules
Paiement protégéEn savoir plus
  • Les retouches prévues par la formule sont gratuites.
  • Sans réponse de votre part dans les 3 jours suivant la livraison, le travail est validé automatiquement.

L’argent est réservé au paiement et versé uniquement une fois le travail validé.

Un parseur Python qui enregistre les données SEO des pages d’un site dans un tableau : title, description, H1, statut, canonical

Exemple de résultat

Exemple pour la formule Standard

Parseur du catalogue d’un fournisseur d’outils de jardin vers Excel

À quoi ressemble le résultat

RéférenceNomPrixEn stockPoidsPhoto
GT-1042Sécateur, 20 mm18,90Oui0,24 kg…/gt-1042.jpg
GT-1187Scie pliante, 210 mm24,50Oui0,31 kg…/gt-1187.jpg
GT-2210Cisaille à haies, lame ondulée39,00Non1,10 kg…/gt-2210.jpg
GT-3305Transplantoir, inox9,80Oui0,18 kg…/gt-3305.jpg
GT-4120Tuyau d’arrosage 25 m, 1/2"42,00Oui2,90 kg…/gt-4120.jpg

Le fichier de l’exemple contient 1 236 produits issus de 52 pages de liste.

Un extrait du code

def product_links(list_url: str) -> Iterator[str]:
    """Liens des fiches produits de chaque page de la liste, en suivant « Suivant »."""
    url: str | None = list_url
    while url:
        page = fetch(url)
        for card in page.select("div.product-card a.title"):
            yield urljoin(url, card["href"])
        next_link = page.select_one("a.pagination-next")
        url = urljoin(url, next_link["href"]) if next_link else None


def fetch(url: str) -> BeautifulSoup:
    """Une page publique, à un rythme raisonnable : une pause entre les requêtes et quelques essais en cas d’erreur."""
    for attempt in range(3):
        time.sleep(settings.delay_seconds)
        response = session.get(url, timeout=30)
        if response.status_code == 200:
            return BeautifulSoup(response.text, "html.parser")
        log.warning("%s a répondu %s, essai %d sur 3", url, response.status_code, attempt + 1)
    raise ScraperError(f"{url} ne s’est pas ouverte après 3 essais")

Fichiers : une archive ZIP avec scraper.py, settings.ini (la page de départ, la pause entre les requêtes, le nom du fichier), requirements.txt et un README sur l’installation et le lancement. Il ne lit que des pages publiques, une toutes les 2 secondes, et consulte d’abord le robots.txt du site. Le client le lance sur son propre ordinateur.

Client : une jardinerie en ligne qui revend les outils d’un fournisseur ; celui-ci a un catalogue public sur son site, mais aucun fichier de tarifs. Tâche : parcourir les pages de liste du catalogue, ouvrir chaque fiche produit et enregistrer dans Excel la référence, le nom, le prix, le stock, le poids et le lien de la photo principale, pour comparer les prix une fois par semaine.

Le client et tous les détails sont fictifs.

À propos de ce service

Avant une migration de site ou un contrôle SEO, ce parseur parcourt les pages d’un site et enregistre une ligne pour chacune : adresse, code de réponse, title et meta description avec leur longueur, H1, nombre de H2, lien canonical, balise noindex, nombre de mots, images sans texte alternatif et nombre de liens internes. Il prend les adresses dans le fichier sitemap du site, dans les pages de catégorie ou dans votre propre liste. Utilisez-le sur votre propre site ou sur le site public d’un concurrent. Envoyez l’adresse du site, quelques pages enregistrées depuis votre navigateur et les champs voulus. Vous recevez un code Python, un fichier de paramètres et un README et le lancez sur votre ordinateur. Il collecte des faits, ne corrige pas le site et ne promet aucun positionnement dans les moteurs de recherche. Il ne lit que des pages publiques, à un rythme raisonnable, et ne se connecte jamais, ne contourne ni captcha ni protection. C’est à vous de juger si les conditions d’un site le permettent ; un changement ultérieur de mise en page demande une mise à jour.

Ce qui est inclus

  • Ce que vous recevezUne archive ZIP avec le code Python, un fichier de paramètres et un README avec des instructions pas à pas ; le code est aussi affiché sur la page de la commande.
  • Balises et longueurTitle et description avec le nombre de caractères
  • Codes de réponseRepérez les pages cassées et redirigées
  • Texte alternatif manquantCompte les images sans texte alternatif
  • Depuis le sitemap ou votre listeAdresses tirées du fichier sitemap, des catégories ou d’un fichier que vous donnez
  • Rythme raisonnableUne pause entre les pages, réglée dans les paramètres

Comment ça marche

  1. 1
    SiteVous donnez le site, la source des adresses et des pages enregistrées
  2. 2
    ParseurNous écrivons le code et le guide pour le lancer
  3. 3
    LancementVous le lancez et vérifiez quelques lignes dans votre navigateur
  4. 4
    RetouchesVous demandez des retouches selon votre formule et envoyez les éventuels messages d’erreur

Ce dont nous avons besoin

L’adresse du site et l’endroit où le parseur doit prendre les adresses : le fichier sitemap, les pages de catégorie ou votre propre liste. Le nombre approximatif de pages. Les champs voulus, ex. : adresse, code de réponse, title, description, H1, canonical, noindex, nombre de mots, images sans alt. Deux ou trois pages de types différents enregistrées depuis votre navigateur (Fichier > Enregistrer la page sous). CSV ou Excel.

Nous vous demanderons :

  • Quel site ?
  • Où prendre les adresses
  • Les champs voulus
  • Combien de pages environ ?

Comparer les formules

FormulesEssentielPages de votre liste19 €StandardTout le site depuis ses listes37 €PremiumJusqu’à 3 sites66 €
Délai1 jour2 jours3 jours
Retouches123
Sites11jusqu’à 3
Types de pages12 (liste de pages et page)jusqu’à 3
Champsjusqu’à 10jusqu’à 25jusqu’à 25 sur chacun
Parcourt les pages d’une listeNonOuiOui
Fichier de résultatsCSVExcel ou CSVExcel, CSV ou JSON
Doublons retirés, reprise là où il s’est arrêtéNonNonOui
Commander EssentielCommander StandardCommander Premium

Paiement protégé

Vous payez à la commande, mais l’argent n’est versé que pour un travail validé.

  • Prix fixeLe prix de la formule ne change pas après le paiement.
  • L’argent est réservéAu paiement, le montant est seulement réservé. Il n’est versé à Dleex qu’une fois le travail validé.
  • Vérifié avant livraisonChaque résultat passe un contrôle qualité avant de vous parvenir, et vous le voyez sur la page de la commande avant de le valider.
  • Retouches gratuitesDemandez des retouches dans le cadre de votre brief autant de fois que la formule le permet.
  • Validation au bout de 3 joursSi, dans les 3 jours suivant la livraison, vous n’avez ni validé le travail ni demandé de retouches, il est validé automatiquement. Si vous écrivez dans le chat de la commande après la livraison, la commande est mise en attente ; après notre réponse, nous pourrons relancer le délai de 3 jours et vous le signalerons dans le chat.
  • Travail refait ou remboursement intégralSi le résultat ne correspond pas à votre brief et que les retouches n’y ont rien changé, ou si le travail prend plus du double du délai prévu, écrivez dans le chat de la commande : nous referons le travail ou vous rembourserons intégralement.
Comment ça marche →

Questions et réponses

Est-ce un audit SEO complet ?

Non. Il rassemble les faits de chaque page dans un seul tableau ; les conclusions et les corrections vous reviennent, ou à votre propre développeur.

Peut-il vérifier mes positions dans Google ?

Non. Il ne lit ni Google, ni Amazon, ni LinkedIn, ni les réseaux sociaux : leurs conditions l’interdisent. Les positions se trouvent dans votre compte de console de recherche, auquel le parseur ne se connecte jamais.

Quelle taille de site peut-il parcourir ?

Des milliers de pages ne posent pas de problème, mais à un rythme raisonnable elles prennent des heures. Premium reprend là où il s’est arrêté : un long passage peut donc être fractionné.

Peut-il lire une copie de test de mon site protégée par un mot de passe ?

Non. Il ne lit que des pages publiques et ne se connecte jamais. Une copie de test publique sans mot de passe fonctionne, et les mots de passe ne vont jamais dans le code.

Vous n’avez pas trouvé la réponse ?

Formules