---
# 🎯 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]]