
Un HTML est le balisage enregistré de la page. Une bibliothèque est du code installé séparément et utilisé par le lecteur. Un hash est une empreinte de fichier qui identifie la copie enregistrée exacte. Une sortie None ou vide représente une extraction indisponible. Gardez séparés les états de l'entrée récupérée, du corps et de l'extraction ; une page de connexion, un challenge ou une coquille HTML n'est pas un corps obtenu, et aucun rendu ni aucun accès masqué n'a été testé.
Vérifier le texte principal extrait d'une page web
- Définissez ce que l'agent doit obtenir de la page et quelles zones de la page sont hors de ce besoin. Cette méthode porte sur la qualité de l'extraction.
- Utilisez l'Actor public Google Search Scraper, build 1.0.15, avec une Task pour découvrir des URL candidates si une découverte est nécessaire. Remplacez tout l'échantillon enregistré de trois requêtes par une seule expression de recherche prévue, avec `queries` ["one intended phrase"], `engines` ["bing"], `maxResultsPerExecutedQuery` 2, `country` "US", `language` "en", `safeSearch` true et `includeSponsoredResults` false. Les champs natifs des candidats de recherche comprennent `engine`, `executedQuery`, `canonicalUrl`, `resultDomain`, `snippet`, `rank`, `page` et `observedAt`. Les enregistrements agrégés de sortie comprennent `queriesRequested`, `searchesCompiled`, `executionsPlanned`, `enginesRequested`, `enginesSuccessful`, `enginesFailed`, `pagesAttempted`, `pagesParsed`, `candidatesSeen`, `resultsSaved`, `engineStatusCounts`, `queryResultCounts` et `stopReason`. Le contrôle Bing actuel sur deux lignes a renvoyé des URL candidates directes vers docs.python.org, avec la requête, les rangs 1 et 2, la page 1 et l'heure d'observation, plus une page analysée et le stopReason `result_caps_reached`. Il ne vérifie que des candidats dans une limite, pas la récupération de la destination, pas l'extraction de texte, ni d'autres moteurs ou marchés. Ici, seul Bing a une preuve de moteur acceptée.
- Récupérez séparément une page de destination permise et conservez son URL finale, l'heure de récupération, le type de contenu et le HTML source. L'actor de recherche ne fait pas cette récupération. Vérifiez que l'entrée enregistrée contient bien le texte d'article prévu. Gardez séparés `fetch_failure`, `body_not_in_saved_html` et `extraction_unavailable`.
- Exécutez une bibliothèque d'extraction de texte séparée sur ce HTML enregistré, sous une version et des options consignées. Le cas de test HTML local d'origine a été testé avec la version installée 2.0.0 au moyen de `trafilatura.extract(html, include_comments=False)`. La documentation actuelle décrit la version 2.3.1 ; ces faits de version doivent donc rester séparés.
- Définissez plusieurs contrôles de la source avant d'accepter la sortie : titre ou passage requis, négation ou condition, nombre avec son unité, et navigation, pied de page ou commentaires à exclure. Comparez le HTML enregistré et le texte renvoyé. Une unité perdue ou une négation manquante peut inverser le sens.
- Consignez chaque contrôle comme retained, changed, missing, unwanted_noise_present ou cannot_resolve, avec le localisateur exact dans la source et le passage extrait. Ne comptez les faits contrôlés que si c'est utile.
- Si un contrôle critique échoue, examinez le HTML enregistré et les réglages d'extraction plutôt que de transmettre un texte altéré à l'agent.
- Enregistrez une fiche d'extraction compacte : URL source et contexte de récupération, référence ou hash du HTML, version et options de l'extracteur, référence de la sortie, tableau de contrôles et décision.
Cas de test fictif complet d'origine pour le HTML enregistré : le HTML enregistré de « Guide fictif du plateau » contient des blocs de navigation, de connexion et de pied de page, un article et une section de commentaires. L'article dit « N'ajoutez pas d'eau tant que le plateau n'est pas de niveau » et « Utilisez 12 millilitres d'eau pour cette démonstration fictive. » Le commentaire et le menu contiennent des mots sans rapport. Aucune destination n'a été récupérée en direct pour ce cas de test.
| Élément contrôlé | Contenu du HTML enregistré | Texte extrait en sortie | État |
|---|---|---|---|
| Titre requis | Guide fictif du plateau | Guide fictif du plateau | Conservé |
| Négation / condition | N'ajoutez pas d'eau tant que le plateau n'est pas de niveau | N'ajoutez pas d'eau tant que le plateau n'est pas de niveau | Conservé |
| Nombre et unité | 12 millilitres | 12 millilitres | Conservé |
| Marqueur de navigation | NavigationMarker | Absent | Contrôle créé par le lecteur : bruit indésirable absent |
| Marqueur de pied de page | FooterMarker | Absent | Contrôle créé par le lecteur : bruit indésirable absent |
| Marqueur de commentaires | CommentsMarker | Absent | Contrôle créé par le lecteur : bruit indésirable absent |
L'appel à l'extracteur en version installée 2.0.0 a produit un texte principal non vide. Une sortie hypothétique comme « Ajoutez de l'eau. Utilisez 12 » échouerait à deux contrôles, parce que la négation et la condition requises ont changé et que l'unité du nombre manque. Une sortie hypothétique vide serait marquée `extraction_unavailable`, et non un article à zéro fait.
Sources et lectures complémentaires
Par Chronometrica · Mis à jour
Retour en haut ↑
