2 min read

Pirates et Python : comment scrapper du texte en masse ?

C’est article explique comment utiliser Python pour extraire du texte en masse à partir d'un sitemap XML, en détectant la langue, en nettoyant le texte, en le convertissant en Markdown.
Pirates et Python : comment scrapper du texte en masse ?

J’ai eu un besoin bien spécifique pour l’un de mes clients. Ne trouvant pas d’outil à la hauteur de la mission, j’ai décidé de jouer un peu avec le langage Python. Le but est que mon script puisse parcourir un sitemap au format XML puis d’en extraire des informations.

Le script aura ensuite à charge, pour chaque page mentionnée dans le sitemap, de scrapper l’ensemble du texte affiché sur la page du visiteur.

Puis enfin de collecter tout cela dans un fichier au format Markdown en gardant un minimum de mise en forme.

Ce n’était pas si difficile, mais ça m’a permis de me remettre un peu au développement web. Intégralement réalisé sur iPad à l’aide de l’application Pyto qui a la particularité d’avoir une vraie console.

Bref. Un script pas si long, pas si complexe, mais qui rend bien service.

Explication du script en détail :

  1. Détection de la langue : j’utilise langdetect pour détecter la langue du texte et n’extraire que le texte en français. Ce qui me permet de dégager le surplus d’informations des CMS.
  2. Nettoyage du texte : j’utilise unicodedata.normalize pour normaliser le texte et supprimer les caractères non valides tout en conservant les caractères français.
  3. Conversion HTML en Markdown : j’utilise markdownify pour convertir le contenu HTML en markdown.
  4. Formatage du fichier Markdown : Inclut le titre de la page, l’URL, le nombre de mots et formate le contenu avec des séparateurs pour une meilleure lisibilité.

Cette méthode vous permet d’obtenir un fichier Markdown bien structuré avec les informations souhaitées pour chaque page web. Sans trop me casser la tête au final.

Ainsi, j’ai pu retrouver dans un seul fichier Markdown (extension .md mais en fait, c’est un fichier texte simple) l’intégralité des textes en français du site de mon client. Ce qui m’a permis de lancer des analyses bien plus poussées. Le champs lexical ou la récurrence de certains mots.

Spoiler : oui, j’aurai pu utiliser certains outils des experts SEO pour ça. Mais, sans défi, pas de plaisir hein ^^

On commencer par installer les bibliothèques nécessaires.

  • beautifulsoup4
  • requests
  • langdetect
  • markdownify

Que vous pouvez faire en exécutant directement dans la console la ligne suivante :

pip install beautifulsoup4 requests langdetect markdownifypy

Ensuite, il faut jouer avec le script Python pour scraper et formater le texte.

💡
Cliquez sur le lien ci-dessous, c’est plus pratique de vous partager ça sur GitHub directement !
Scrapping text from sitemap.xml
Scrapping text from sitemap.xml. GitHub Gist: instantly share code, notes, and snippets.

Ah, et n’oubliez pas de personnaliser la variable sitemap_url 🙂