--- # 🎯 Objectifs du chapitre À la fin de ce chapitre, l’étudiant doit être capable de : - Comprendre ce qu’est un **webcrawler** - Comprendre comment les robots parcourent le web - Comprendre la différence entre **crawler**, **scraper** et **API** - Télécharger une page web avec Python - Lire le contenu HTML d’une page --- # 1️⃣ Introduction : pourquoi collecter des données web ? Le web contient une quantité énorme d’informations : - articles de presse - données économiques - informations scientifiques - prix de produits - données météo Cependant, ces données sont souvent **présentées pour les humains**, pas pour les programmes. Exemple : Un site d’actualité affiche : ``` Titre : Offshore wind project launched Date : 12 June 2024 Content : ... ``` Pour analyser ces informations avec Python, nous devons **automatiser la collecte**. C’est là qu’intervient le **web scraping**. --- # 2️⃣ Qu’est-ce qu’un WebCrawler ? Un **webcrawler** est un programme qui explore automatiquement des pages web. Son fonctionnement est similaire à un utilisateur qui clique sur des liens. ### Fonctionnement simplifié 1️⃣ visiter une page web 2️⃣ télécharger son contenu HTML 3️⃣ extraire les informations utiles 4️⃣ trouver de nouveaux liens 5️⃣ visiter ces nouveaux liens --- ## Exemple réel Les moteurs de recherche utilisent des crawlers. Exemples : |Crawler|Utilisation| |---|---| |Googlebot|indexation Google| |Bingbot|indexation Bing| |YandexBot|indexation Yandex| Ces robots parcourent des **milliards de pages web**. --- # 3️⃣ Architecture simplifiée d’un crawler Un crawler fonctionne généralement selon cette architecture : ``` URL initiale ↓ Téléchargement de la page ↓ Analyse du HTML ↓ Extraction des données ↓ Stockage ↓ Extraction de nouveaux liens ↓ Exploration de nouvelles pages ``` Dans ce cours, nous allons construire une **version simplifiée**. --- # 4️⃣ Crawler vs Scraper Ces deux termes sont souvent confondus. ### WebCrawler Un crawler **explore les pages**. Exemple : ``` page1 → page2 → page3 → page4 ``` ### WebScraper Un scraper **extrait les informations**. Exemple : ``` Titre Date Auteur Contenu ``` --- ### Exemple concret Crawler : explorer tous les articles d'un site Scraper : extraire les titres et dates des articles --- # 5️⃣ Le langage du web : HTML Quand on visite une page web, le serveur envoie un document appelé **HTML**. Exemple simplifié : ```HTML <html> <head> <title>Example page</title> </head> <body> <h1>Title</h1> <p>This is an article</p> <a href="article2.html">Next article</a> </body> </html> ``` Un scraper doit **analyser ce HTML** pour trouver les informations. --- # 6️⃣ Télécharger une page avec Python Pour récupérer une page web, on utilise la bibliothèque : ``` requests ``` Installation : ``` pip install requests ``` --- ## Exemple simple ```Python import requests url = "https://www.r-project.org/" response = requests.get(url) print(response.status_code) print(response.text[:500]) ``` --- ### Explication ``` requests.get() ``` → envoie une requête HTTP au serveur. Le serveur répond avec : ``` response ``` Contenu de la réponse : |élément|signification| |---|---| |status_code|code HTTP| |text|contenu HTML| --- ## Codes HTTP |code|signification| |---|---| |200|succès| |404|page inexistante| |500|erreur serveur| --- # 7️⃣ Exemple réel Essayons avec un site réel. ```Python import requests url = "https://www.r-project.org/" response = requests.get(url) print(response.status_code) print(response.text[:500]) ``` Vous verrez apparaître **le code HTML de la page**. --- # 🧠 Mini-tâche 1 (5 minutes) Répondez aux questions : 1️⃣ Qu’est-ce qu’un **webcrawler** ? 2️⃣ Quelle est la différence entre : ``` crawler scraper ``` 3️⃣ Pourquoi les moteurs de recherche utilisent-ils des crawlers ? --- # 🧠 Mini-tâche 2 (5 minutes) Dans ce code : ```Python import requests url = "https://www.r-project.org/" response = requests.get(url) print(response.status_code) ``` Questions : 1️⃣ Quel est le rôle de `requests.get()` ? 2️⃣ Que signifie `status_code = 200` ? 3️⃣ Que signifie `status_code = 404` ? --- # 💻 Mini-tâche 3 (10 minutes) Tester ce script : ```Python import requests url = "https://www.r-project.org/" response = requests.get(url) print(response.status_code) print(response.text[:300]) ``` Questions : 1️⃣ Quel est le code HTTP obtenu ? 2️⃣ Que contient le texte affiché ? 3️⃣ Pourquoi ce texte est-il difficile à lire ? --- # 💻 Mini-tâche 4 (10 minutes) Modifier le script pour tester : ``` https://example.com https://github.com https://wikipedia.org ``` Afficher : URL + status code Exemple attendu : ``` https://example.com 200 https://github.com 200 https://wikipedia.org 403 ``` --- # 🧩 Mini-projet du chapitre (30–45 min) ## Objectif Créer un **mini robot** qui télécharge plusieurs pages web. --- ## Instructions Écrire un programme qui : 1️⃣ crée une liste de sites web ``` example.com wikipedia.org github.com offshore-energy.biz ``` 2️⃣ visite chaque site 3️⃣ récupère le **code HTTP** 4️⃣ affiche les **200 premiers caractères HTML** --- ## Résultat attendu Exemple : URL: https://example.com Status: 200 HTML preview: <!doctype html>... --- # ✏️ À faire Compléter ce code : ```Python import requests urls = [ "https://example.com", "https://wikipedia.org", "https://github.com", "https://offshore-energy.biz" ] for url in urls: response = requests.____(url) print("URL :", url) print("Status :", response.____) print(response.text[:200]) print("-------------") ``` --- # ✅ Correction du mini-projet ```Python import requests urls = [ "https://example.com", "https://wikipedia.org", "https://github.com", "https://offshore-energy.biz" ] for url in urls: response = requests.get(url) print("URL :", url) print("Status :", response.status_code) print(response.text[:200]) print("-------------") ``` --- # 🔎 Explication du code ### Liste de sites urls = [...] contient les pages à visiter. --- ### Boucle ``` for url in urls ``` permet de visiter chaque site. --- ### Requête HTTP ``` requests.get(url) ``` télécharge la page. --- ### Status code ``` response.status_code ``` indique si la requête a réussi. --- ### HTML ``` response.text ``` contient le code HTML. --- # 🧠 Ce qu’il faut retenir Un **webcrawler** : - visite automatiquement des pages web - télécharge leur contenu HTML - peut explorer de nouveaux liens Dans ce chapitre, nous avons appris à : ✔ envoyer une requête HTTP ✔ télécharger une page ✔ lire le HTML --- ## 🗓️ Historique > **Dernière mise à jour :** `13 mars 2026` > **Rédigé par :** [[Jizhen CAI]]