Extraction personnalisée depuis les pages crawlées

Des sélecteurs de contenu et des règles d’extraction déclaratives s’exécutent sur les corps de page conservés. La recherche dans les sources d’un scan enregistré trouve les pages qui portent un marqueur, comme un extrait GTM.

Ce qu'elle fait

Règles d’extraction

Les règles sont des données simples, pas du code : chacune a un type (text, attribute, structured, presence ou count), un sélecteur et un opérateur (equals, contains, matches ou exists). L’opérateur matches utilise un motif glob borné, pas une expression régulière. scan-extract exécute les règles sur les corps de page conservés, sans réseau ni écriture ; vous pouvez donc modifier une règle et la relancer sans recrawler. Pour tester des extracteurs CSS, XPath ou regex sur du HTML que vous collez, utilisez custom-extract-sample.

Rechercher dans le HTML enregistré

scan-content-search trouve une chaîne ou une expression régulière dans le HTML brut, le balisage de head, le texte du body ou le balisage ciblé par un sélecteur CSS. Utilisez-le pour trouver les pages qui portent un marqueur, comme un extrait GTM. Il écrit les occurrences dans un nouveau paquet local, que vous conservez.

  • Requête littérale ou regex, sur le HTML brut ou le DOM rendu
  • Les résultats se lisent par blocs de 100 enregistrements avec scan-content-search-page

Trois étapes, un seul scan enregistré

  1. Crawlez une fois et conservez les corps

    Un scan enregistré conserve les corps de page complets dans la limite de rétention. Les règles et les recherches s’exécutent ensuite sur cette copie, et non sur le site en ligne.

  2. Exécutez les règles d’extraction hors ligne

    Écrivez les règles en JSON avec un type text, attribute, structured, presence ou count, et un opérateur equals, contains, matches (un glob) ou exists. Transmettez-les à seohead scan-extract par --input ou par l’outil MCP : rien n’est récupéré et le résultat n’est pas enregistré.

  3. Recherchez un marqueur dans le HTML enregistré

    scan-content-search trouve une chaîne littérale ou une regex dans le HTML brut, le balisage de head, le texte du body ou un sélecteur CSS, et écrit un paquet local. Lisez-le 100 lignes à la fois avec scan-content-search-page.

Contrôles de cette fonctionnalité

ContrôleSignificationGravitéPreuve
TITLE_MISSINGL’élément title est absent. Une règle de type text sur le sélecteur title repère le même manque dans tout le scan enregistré.CriticalURL de la page ; l’élément title est absent ou vide
CANONICAL_MISSINGLa page indexable n’a pas d’URL canonique. Une règle presence sur link[rel=canonical] liste les pages qui n’en ont pas.ImportantURL de la page ; aucun lien canonical trouvé
SCHEMA_VALIDATION_ERRORErreurs de validation des données structurées. Une règle structured avec un pointeur JSON permet de lire les valeurs JSON-LD derrière l’erreur.ImportantURL de la page et l’élément de données structurées en erreur
STRUCTURED_DATA_MISSINGDonnées structurées absentes sur les pages où vous les attendez. Une règle presence sur le bloc JSON-LD montre les pages qui n’en ont aucune.TipURL de la page ; aucune donnée structurée trouvée
LOREM_IPSUM_PLACEHOLDERUn texte de remplissage Lorem Ipsum apparaît dans la zone de contenu de la page. Une recherche de contenu sur la phrase de remplissage le trouve dans tout le scan.ImportantURL de la page et nombre d’occurrences du texte de remplissage

Une seule commande

bash
seohead scan-content-search --scan ./scans/audit.sqlite --query gtm.js

Commencez par installer : guide d'installation. Chaque commande fonctionne aussi comme outil MCP pour les agents IA.

Ce qu'il vous faut

  • Un scan enregistré (SQLite) avec les corps de page conservés
  • Pour l’extraction : une liste JSON de règles, passée par --input ou par l’outil MCP
  • Pour la recherche : une chaîne ou une expression régulière, et un nouveau dossier de sortie

Limites

  • Seules les pages dont le corps a été conservé peuvent être recherchées ou extraites.
  • Les règles d’extraction n’ont pas de champ regex ; pour les expressions régulières, utilisez la recherche de contenu.
  • Une occurrence montre que le code est dans le HTML, pas qu’une balise s’est déclenchée pour un visiteur.
  • Le contenu rendu n’est consultable que si le scan a conservé une copie rendue.

Questions

L’extraction télécharge-t-elle à nouveau le site ?
Non. scan-extract et scan-content-search lisent les corps conservés dans le fichier de scan enregistré. Ils ne demandent aucune URL : vous pouvez modifier une règle et la relancer sans nouveau crawl.
Si une balise GTM est trouvée, s’est-elle déclenchée ?
Pas forcément. Une occurrence montre que la balise est dans le HTML. Elle ne prouve pas qu’elle s’est déclenchée pour un visiteur. La recherche indique où le code est présent.
Que se passe-t-il si le corps d’une page n’a pas été conservé ?
La page est signalée comme inconnue, et non comme absente. Une recherche n’affirme jamais qu’un marqueur est absent lorsque le corps n’est pas dans le scan.
Le résultat de l’extraction est-il enregistré ?
scan-extract n’enregistre pas son résultat : il l’affiche pour cette seule exécution. scan-content-search écrit un nouveau paquet local, et vous conservez ainsi ses occurrences.
Puis-je utiliser des expressions régulières ?
Dans la recherche de contenu, oui : --kind regex accepte une expression régulière Python. Si une page dépasse le budget de temps de la regex, ou si la plateforme ne peut pas l’imposer, la page est signalée comme indisponible, et non comme sans correspondance. Les règles d’extraction n’acceptent pas les regex.