Comment scraper les titres des articles sur LeMonde.fr avec Python 3 et Requests

Arrêtez de copier le net. Scrapez le.

 

Comment scraper les titres des articles sur LeMonde.fr avec Python 3 et Requests

2e site d’information en France, avec plus de 83 millions de visiteurs mensuelles d’après SimilarWeb (!!), lemonde.fr est un média important en France.

lemonde-python-scraping-p04uio

Nous allons donc, au cours de ce tutoriel, en utilisant Python 3Requests, et lxml, collecter l’ensemble des titres des articles de ce cher média français, puis en tirer des conclusions sur les sujets du moment qui agite le pays et le monde médiatique français.

Quelle donnée allons nous extraire ?

Rendons-nous d’abord sur la page avec l’ensemble des Tweets de Donald Trump à extraire : https://www.lemonde.fr/actualite-en-continu/. Voici les champs que nous allons extraire :

  1. Contenu du titre (et c’est tout pour le moment)

Et maintenant, un screenshot afin de visualiser la présence de chaque élément dans le site web :

lemonde-python-scraping-p14uio

Trouvez la donnée

Avant de commencer à construire le scraper, nous devons trouver où les données sont présentes dans les balises HTML de la page Web. Il faut connaître le fonctionnement des balises HTML de la page pour pouvoir faire ça.

Nous allons supposer que vous avez déjà des bases en HTML et que vous connaissez le langage Python. Vous n’avez pas besoin de plus de connaissances pour réaliser ce tutoriel.

Si vous ne connaissez ni le HTML, ni le CSS, ni le XPATH, ni le Python, prenez le temps de lire Premiers pas avec HTML – Mozilla Developer Network, Tutoriel CSS W3 School, XPath Tutorial – W3Schools,  et https://www.programiz.com/python-programming

Nous allons inspecter le code HTML de la page Web et localiser les données, en suivant la logique suivante :

  1. Inspecter l’élément
  2. Trouver la balise correspondante

Inspecter l’HTML

Ouvrez votre navigateur Chrome, et rendez-vous sur la page des actualités en continu sur Le Monde : https://www.lemonde.fr/actualite-en-continu/. Vous pouvez le faire avec d’autres navigateurs, mais ce tutoriel se fait sur Chrome, et facilitera votre apprentissage.

Faites, un clique droit, puis cliquer sur Inspecter.

lemonde-python-scraping-p24uio

Nous allons maintenant chercher le tag XPath de chaque élément, avant de lancer notre scraper. Pour faciliter la recherche, cliquer sur le curseur en bas à gauche. Passez ensuite votre souris sur les éléments que nous avons cités en introduction.

On remarque que chaque article est présent au sein de la même balise HTML : 

lemonde-python-scraping-p34uio

Au sein de chaque article, nous allons récupérer le titre. Le titre est lui aussi présent au sein d’une balise HTML au format standard, au sein du texte, d’où le XPath suivant : 

lemonde-python-scraping-p44uio

Comment configurer son ordinateur pour le Web Scraping

Nous allons utiliser Python 3 pour ce tutoriel. Pour commencer, vous avez besoin d’un ordinateur avec Python 3 et PIP installé dedans.

La plupart des systèmes d’exploitation UNIX comme Linux et Mac OS sont livrés avec Python déjà installé. Mais, tous les systèmes d’exploitation Linux ne sont pas livrés avec Python 3 par défaut.

Vérifions votre version de python. Ouvrez un terminal (sous Linux et Mac OS) ou Invite de commandes (sous Windows) et tapez

Si vous n’avez pas Python 3, il va falloir l’installer.

Installer Python et Request

Pour installer Python et PIP, vous pouvez vous rendre sur le post que nous avons déjà fait à ce sujet : https://lobstr.io/index.php/2018/02/15/installer-librairies-python-mac-os/

Pour installer Requests, et les autres librairies utilisées dans le code, il suffit d’ouvrir votre commande, et de

Pour plus de renseignements sur Requests et ses fonctionnalités avec Python, leur documentation est fournie et très utile : http://docs.python-requests.org/en/master/

Le code

Pour exécuter le script, ouvrez votre éditeur Sublime Text 3, copier-coller le code ci contre, et enregistrez le sous le nom de lemonde_headlines.py

Dans votre commande, placez ensuite la ligne suivante :

Vous pourrez ensuite observer directement depuis votre console, le résultat suivant :

lemonde-python-scraping-p54uio

Après avoir collecté l’ensemble des données, nous les avons filtrées, décortiquées, agrégées en servant d’un outil de Data Visualisation, gratuit et open-source, et que nous recommandons sans hésiter : Tableau Public, la version gratuite de tableau, accessible ici https://public.tableau.com/; pour se former gratuitement, là : https://www.tableau.com/fr-fr/learn/training.

Nous avons uniquement conservé les mots et les adjectifs, puis avons exclu les mots dont le nombre d’apparitions était inférieur à 6. Enfin, nous avons choisi la superbe couleur dite du Aube-crépuscule divergent

Sans surprise, les gilets jaunes occupent majoritairement l’espace, avec 58 apparitions, tandis que les attentats de Strasbourg viennent ensuite. Fait amusant, on note que france (17) apparaît avant monde (15), tandis que trump est cité autant de fois que climat (6). Enfin, les mots justice et mort se talonnent (10). Des obsessions terriblement modernes.

Limitations connues

Le script permet de collecter le texte des titres sur lemonde.fr. Il aurait pu toutefois être intéressant d’aller chercher les descriptions, et même le contenu des textes. Surtout, la catégorie actualités en continu limite les résultats à 25 pages, il pourrait être intéressant de collecter les résultats en continu dans le temps, et d’en voir les évolutions.

Surtout, l’analyse se limite ici à l’occurence des mots. Il pourrait être intéressant d’observer les relations entre les mots, et d’évoquer ici des outils d’analyse textuelle, ou Natural Language Processing tel que TextBlob, ici dans sa version française : https://github.com/sloria/textblob-fr.

Si vous avez besoin d’aide pour scraper des milliers de données de façon récurrente et à grande échelle, ou si ces sets de données vous intéressent afin de mener à bien vos recherches, vous pouvez nous contacter juste là :

Avertissement: Tout code fourni dans nos tutoriels est destiné à des fins d’illustration et d’apprentissage uniquement. Nous ne sommes pas responsables de la façon dont il est utilisé et n’assumons aucune responsabilité pour toute utilisation préjudiciable du code source. La simple présence de ce code sur notre site n’implique pas que nous encourageons le scraping ou l’extraction de données des sites référencés dans le code et le tutoriel qui l’accompagne. Les tutoriels ne font qu’illustrer la technique de programmation des scrapers web pour les sites internet populaires. Nous ne sommes pas obligés de fournir un support pour le code, cependant, si vous ajoutez vos questions dans la section des commentaires, nous pouvons vous y répondre périodiquement.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *