---
title: "Le scraping de texte : Un tutoriel étape par étape"
slug: text-scraping
date: 2024-11-03T15:42:46+00:00
modified: 2025-11-04T08:54:31+00:00
permalink: https://brightdata.fr/blog/donnees-web/text-scraping
type: blog
---

[ Blog ](https://brightdata.fr/blog "Blog") / [Données Web](https://brightdata.fr/blog/donnees-web)







 [Données Web](https://brightdata.fr/blog/donnees-web)

# Le scraping de texte : Un tutoriel étape par étape

Ce guide vous accompagne dans le scraping de texte avec Python, depuis la configuration jusqu’à l’archivage des données, tout en fournissant des conseils pratiques sur l’utilisation de proxys pour contourner les blocages d’IP.

 15 min de lecture









 ![Text scraping tutorial blog image](https://media.brightdata.fr/2024/11/Scraping_-Step-By-Step-Tutorial-1.svg)





Le [web scraping](https://brightdata.fr/blog/savoir-faire/what-is-web-scraping) consiste à extraire des données directement à partir des pages web. Étant donné que les données peuvent se présenter sous diverses formes, le terme « *text scraping* » fait spécifiquement référence à l’extraction de données textuelles à partir de pages web.

Disposer d’un accès à une grande quantité de données pertinentes est essentiel pour prendre des décisions commerciales éclairées. L’extraction d’informations à partir des sites web de vos concurrents peut vous fournir des insights précieux sur leur stratégie commerciale, vous donnant ainsi un avantage concurrentiel. Dans ce tutoriel, vous vous apprendrez à créer un scraper de texte en [Python](https://www.python.org/), facilitant ainsi l’extraction et l’exploitation des données web.

## <a></a>Prérequis

Avant de commencer ce tutoriel, veuillez vous assurer que les prérequis suivants sont remplis :

- Pip
- Python

Pour obtenir plus d’informations afin de commencer le web scraping avec Python, vous pouvez consulter [cet article](https://brightdata.fr/blog/savoir-faire/web-scraping-with-python).

## <a></a>Comprendre la structure du site web

Avant de commencer le scraping, il est crucial d’analyser la structure du site web cible. Les sites web utilisent le langage de balisage HTML, pour organiser et structurer la présentation du contenu.

Que ce soit un titre, un paragraphe ou un lien, chaque élément de contenu est encapsulé dans des balises HTML Ces balises vous permettent de repérer l’emplacement précis des données à extraire. Par exemple, dans ce cas, vous extrayez les citations du site fictif « [Quotes to Scrape](https://quotes.toscrape.com/) ». Pour visualiser la structure de ce site web, ouvrez-le dans votre navigateur, puis accédez aux **Developer Tools** en cliquant avec le bouton droit de la souris sur la page et en sélectionnant « **Inspect** » ou « **Inspect Element** ». Le code HTML de la page s’affiche :

![Analyser l’élément dans un navigateur web](https://media.brightdata.com/2024/11/image-1024x451.png)Prenez le temps d’analyser la structure du site en recherchant des balises telles que `<div>`, `<span>`, `<p>`, and `<a>` , qui contiennent souvent le texte ou les liens que vous souhaitez extraire. Il est également important de noter que les balises incluent généralement un attribut `class` . Son objectif est de définir une classe spécifique pour l’élément HTML, ce qui facilite son stylisme avec CSS ou son ciblage avec JavaScript.

> **Remarque :** L’attribut `class` est particulièrement utile pour le web scraping, car il permet de cibler des éléments spécifiques d’une page qui partagent le même style ou la même structure, facilitant ainsi l’extraction précise des données nécessaires.

Dans cet exemple, chaque citation est encapsulée dans un élément `div` ayant pour classe `quote`. Si vous souhaitez extraire à la fois le texte et l’auteur de chaque citation, le texte se trouve dans un élément `div` avec la classe `text`, tandis que l’auteur est situé dans un élément `small` portant la classe `author`:

![Structure HTML d’une citation](https://media.brightdata.com/2024/11/image-1-1024x452.png)Si vous n’êtes pas familier avec le HTML, nous vous recommandons de consulter cet [article sur le web scraping en HTML](/blog/savoir-faire/html-web-scraping) pour approfondir vos connaissances.

## <a></a>Extraction de texte à partir d’un site web

Une fois la structure du site web comprise, l’étape suivante consiste à rédiger le code nécessaire pour extraire les citations du site [Quotes to Scrape](https://quotes.toscrape.com/) .

Python est un choix privilégié pour le web scraping en raison de sa simplicité d’utilisation et de la richesse de ses bibliothèques, telles que `requests` et `BeautifulSoup.`. Vous utilisez la bibliothèque `requests` pour récupérer le contenu HTML d’une page web. Cela est essentiel car vous devez d’abord obtenir les données brutes sous forme de HTML avant de pouvoir les analyser et en extraire les informations pertinentes. Une fois que vous avez récupéré le contenu HTML, vous pouvez le transformer en une structure plus facile à manipuler en utilisant `BeautifulSoup`.

Pour commencer, créez un fichier Python pour votre scaping de texte, en le nommant `text-scraper.py`. Ensuite, importez les bibliothèques `BeautifulSoup` et `requests`:

```none
import requests
from bs4 import BeautifulSoup

```

Indiquez l’URL du site web à récupérer, puis envoyez une requête GET pour obtenir son contenu :

```none
# URL of the quotes website
url = 'https://quotes.toscrape.com/'

# Send a GET request to the URL
response = requests.get(url)

```

Après l’envoi de la requête GET, vous recevrez le code HTML complet de la page demandée. Il est nécessaire d’analyser ce code HTML afin d’extraire uniquement les données pertinentes, telles que le texte et l’auteur de chaque citation dans ce cas précis. Pour ce faire, la première étape consiste à créer un objet `BeautifulSoup` pour analyser le HTML :

```none
soup = BeautifulSoup(response.text, 'html.parser')

```

Cherchez tous les éléments `div` qui contiennent des citations, c’est-à-dire ceux ayant la classe `quote` :

```none
quotes = soup.find_all('div', class_='quote')

```

Créez une liste pour stocker les citations extraites, comme suit :

```none
data = []

```

Ensuite, extrayez le texte et l’auteur de chaque citation et stockez-les dans la liste `data` comme suit :

```none
for quote in quotes:
    text = quote.find('span', class_='text').text.strip()
    author = quote.find('small', class_='author').text.strip()

    data.append({
        'Text': text,
        'Author': author
    })

```

Le script devrait avoir la structure suivante :

```none
import requests
from bs4 import BeautifulSoup

# URL of the quotes website
url = 'http://quotes.toscrape.com/'

# Send a GET request to the URL
response = requests.get(url)

# Create a BeautifulSoup object to parse the HTML
soup = BeautifulSoup(response.text, 'html.parser')

# Find all quote containers
quotes = soup.find_all('div', class_='quote')

# Extract data from each quote
data = []
for quote in quotes:
    text = quote.find('span', class_='text').text.strip()
    author = quote.find('small', class_='author').text.strip()

    data.append({
        'Text': text,
        'Author': author
    })

print(data)

```

Vous pouvez maintenant exécuter le script depuis votre terminal :

```none
# For Linux and macOS
python3 text-scraper.py

# For Windows
python text-scraper.py

```

Vous devriez voir s’afficher une liste des citations extraites, comme dans l’exemple ci-dessous :

```none
[{'Author': 'Albert Einstein',
  'Text': '"The world as we have created it is a process of our thinking. It '
        'cannot be changed without changing our thinking."'},
 {'Author': 'J.K. Rowling',
  'Text': '"It is our choices, Harry, that show what we truly are, far more '
        'than our abilities."'},
 {'Author': 'Albert Einstein',
  'Text': '"There are only two ways to live your life. One is as though '
        'nothing is a miracle. The other is as though everything is a '
        'miracle."'},
 {'Author': 'Jane Austen',
  'Text': '"The person, be it gentleman or lady, who has not pleasure in a '
        'good novel, must be intolerably stupid."'},
 {'Author': 'Marilyn Monroe',
  'Text': ""Imperfection is beauty, madness is genius and it's better to be "
        'absolutely ridiculous than absolutely boring."'},
 {'Author': 'Albert Einstein',
  'Text': '"Try not to become a man of success. Rather become a man of '
        'value."'},
 {'Author': 'André Gide',
  'Text': '"It is better to be hated for what you are than to be loved for '
        'what you are not."'},
 {'Author': 'Thomas A. Edison',
  'Text': ""I have not failed. I've just found 10,000 ways that won't work.""},
 {'Author': 'Eleanor Roosevelt',
  'Text': '"A woman is like a tea bag; you never know how strong it is until '
        "it's in hot water.""},
 {'Author': 'Steve Martin',
  'Text': '"A day without sunshine is like, you know, night."'}]

```

Bien que ce scraping de texte semble relativement simple, vous pourriez rencontrer des obstacles tels que le blocage de l’IP si le site détecte trop de requêtes ou la présence de CAPTCHAs qui bloquent l’accès automatisé. Pour contourner ces problèmes, vous pouvez utiliser des [proxies](https://brightdata.fr/blog/abc-du-proxy/what-is-proxy-server).

## <a></a>Utilisation de proxies pour un scraping de manière anonyme

Les proxies permettent de [surmonter les restrictions liées aux blocages d’IP](https://brightdata.fr/blog/abc-du-proxy/how-to-bypass-an-ip-ban) et aux CAPTCHA en modifiant fréquemment votre adresse IP, donnant ainsi l’apparence que les requêtes proviennent de diverses sources géographiques. Pour utiliser les proxys, vous devez configurer la méthode `request.get()` de manière à rediriger toutes les requêtes via un serveur proxy.

Dans ce cas, vous pouvez utiliser les [proxies tournants de Bright Data](https://brightdata.fr/solutions/rotating-proxies), qui offrent un accès à plus de 400M+ monthly d’adresses IP réparties dans plus de 195 pays. Pour commencer, créez un compte gratuit sur Bright Data en cliquant sur **Start Free Trial** dans le coin supérieur. Ensuite, remplissez le formulaire d’inscription et cliquez sur **Create Account** :

![Formulaire d’inscription de Bright Data](https://media.brightdata.com/2024/11/image-2-1024x515.png)### <a></a>Configurer un proxy résidentiel de base

Une fois votre compte Bright Data créé, connectez-vous et accédez à la section **Proxies &amp; Scraping** . Dans la section **Proxy networks**, trouvez **Residential proxies** et cliquez sur **Get Started** :

![Tableau de bord Bright Data : Rubrique **Proxies & Scraping**](https://media.brightdata.com/2024/11/image-3-1024x515.png)Vous serez invité à ajouter une nouvelle zone pour le proxy résidentiel. Maintenez les valeurs par défaut, attribuez un nom à la zone, puis cliquez sur **Add** :

![Créez une nouvelle zone résidentielle de proxy](https://media.brightdata.com/2024/11/image-4-1024x515.png)C’est tout ce qu’il faut pour créer une nouvelle zone de proxy résidentiel !

Pour utiliser le proxy, vous devrez obtenir vos informations d’identification (*exemple* : nom d’utilisateur, mot de passe et hôte). Pour obtenir ces informations d’identification, retournez dans la section **Proxies &amp; Scraping** et sélectionnez la zone de proxy que vous venez de créer :

![Liste des zones de proxy créées](https://media.brightdata.com/2024/11/image-5-1024x515.png)En cliquant sur la zone de proxy, le panneau de configuration de cette zone s’affiche. Dans la section **Authorization**, vous verrez vos informations d’identification :

![Identifiants de la zone proxy de Bright Data](https://media.brightdata.com/2024/11/image-6-1024x515.png)### <a></a>Mise à jour du script de scraping

Dès que vous disposez de vos identifiants de proxy, vous pouvez passer à la configuration du proxy. Commencez par enregistrer vos identifiants dans des variables :

```none
host = 'brd.superproxy.io'
port = 22225

username = 'brd-customer-<customer_id>-zone-<zone_name>'
password = '<zone_password>'

```

Ensuite, construisez une URL de proxy en utilisant les informations d’identification enregistrées :

```none
proxy_url = f'http://{username}:{password}@{host}:{port}'

```

Créez une configuration de proxy pour gérer les requêtes HTTP et HTTPS :

```none
proxies = {
    'http': proxy_url,
    'https': proxy_url
}

```

Intégrez ensuite la configuration du proxy dans l’appel actuel de `requests.get()` :

```none
response = requests.get(url, proxies=proxies)

```

À ce stade, votre script devrait avoir la structure suivante :

```none
import requests
from bs4 import BeautifulSoup

# BrightData credentials
host = 'brd.superproxy.io'
port = 22225

username = 'brd-customer-<customer_id>-zone-<zone_name>'
password = '<zone_password>'

# Compose a proxy URL
proxy_url = f'http://{username}:{password}@{host}:{port}'

# Create a proxy configuration
proxies = {
    'http': proxy_url,
    'https': proxy_url
}

# URL of the quotes website
url = 'http://quotes.toscrape.com/'

# Send a GET request to the URL via the specified proxy
response = requests.get(url, proxies=proxies)

# Create a BeautifulSoup object to parse the HTML
soup = BeautifulSoup(response.text, 'html.parser')

# Find all quote containers
quotes = soup.find_all('div', class_='quote')

# Extract data from each quote
data = []
for quote in quotes:
    text = quote.find('span', class_='text').text.strip()
    author = quote.find('small', class_='author').text.strip()

    data.append({
        'Text': text,
        'Author': author
    })

print(data)

```

### <a></a>Lancer et tester le script

L’exécution de ce script donnera le même résultat que celui sans l’utilisation de proxy. La différence réside dans le fait que, grâce au proxy, le site web considère désormais que la requête provient d’une autre localisation, préservant ainsi votre adresse IP réelle et garantissant l’anonymat. Illustrons cela en élaborant un nouveau script simple.

Importez les bibliothèques requises et définissez `l’URL` `« http://lumtest.com/myip.json »` dans le script :

```none
import requests
from bs4 import BeautifulSoup

url = "http://lumtest.com/myip.json"

```

Envoyez une requête GET à `l’URL` sans utiliser de proxy, puis créez un objet `BeautifulSoup` pour analyser la réponse.

```none
# Send a GET request to the URL
response = requests.get(url)

# Create a BeautifulSoup object to parse the HTML
soup = BeautifulSoup(response.text, 'html.parser')

```

Enfin, imprimez l’objet `soup` :

```none
print(soup)

```

Exécutez ce script. En réponse, vous obtiendrez des informations sur votre adresse IP ainsi que sur votre localisation géographique.

Pour réaliser une comparaison, configurez la requête GET afin qu’elle passe par un proxy Bright Data, tout en laissant les autres paramètres inchangés :

```none
# BrightData credentials
host = 'brd.superproxy.io'
port = 22225

username = 'brd-customer-hl_459f8bd4-zone-test_residential_proxy'
password = '8sdgouh1dq5h'

proxy_url = f'http://{username}:{password}@{host}:{port}'

proxies = {
    'http': proxy_url,
    'https': proxy_url
}

# Send a GET request to the URL
response = requests.get(url, proxies=proxies)

```

Lorsque vous exécutez le script mis à jour, vous devriez constater que l’adresse IP retournée dans la réponse est différente. Il ne s’agit pas de votre adresse IP réelle, mais de celle du proxy que vous avez configuré. Vous masquez ainsi votre adresse IP en la substituant par celle d’un des serveurs proxy.

## <a></a>Conservation des données

Une fois les données extraites d’un site web, l’étape suivante consiste à les enregistrer dans un format structuré, afin de faciliter leur accès et leur analyse. Le format CSV est très populaire car il est largement compatible avec les outils d’analyse de données et les langages de programmation.

Pour enregistrer les données extraites dans un fichier CSV, commencez par importer les bibliothèques csv et `pandas` (en haut du script de scraping), car elles contiennent des méthodes permettant de convertir facilement les données au format CSV :

```none
import pandas as pd

```

Ensuite, générez un objet pandas DataFrame à partir des données collectées :

```none
df = pd.DataFrame(data)

```

Enfin, convertissez le DataFrame en fichier CSV et attribuez-lui un nom (*par exemple* `quotes.csv`) :

```none
df.to_csv('quotes.csv', index=False)

```

Une fois ces modifications apportées, exécutez le script. Ensuite, les données extraites sont enregistrées dans le fichier CSV.

Dans cet exemple simple, les guillemets n’ont pas un rôle important à remplir. Cependant, selon les données que vous collectez, il existe de nombreuses méthodes pour les analyser et en extraire des informations pertinentes.

Vous pouvez commencer par explorer les statistiques descriptives en utilisant la fonction [`describe()` de pandas](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.describe.html). Cette fonction permet d’obtenir un aperçu rapide de vos données numériques, incluant des mesures telles que la moyenne, la médiane et l’écart-type. Vous pouvez visualiser vos données en utilisant [Matplotlib](https://matplotlib.org/) ou [Seaborn](https://seaborn.pydata.org/) pour créer des histogrammes, des diagrammes de dispersion ou des diagrammes à barres, ce qui vous permettra d’identifier visuellement des schémas ou des tendances. Pour les données textuelles, des techniques de traitement du langage naturel, telles que l’analyse de la fréquence des mots ou l’analyse des sentiments, peuvent être appliquées afin d’identifier les thèmes dominants ou d’évaluer le sentiment général exprimé dans les avis ou commentaires.

Pour obtenir des informations plus approfondies, examinez les corrélations entre les différentes variables de votre ensemble de données. Par exemple, vous pouvez analyser la corrélation entre les évaluations des livres et la longueur des critiques, ou encore étudier les variations des notes en fonction du genre littéraire ou de l’auteur. Utilisez la fonction pandas `groupby()` pour agréger les données et comparer les mesures entre différentes catégories.

N’oubliez pas de tenir compte du contexte de vos données ainsi que des questions spécifiques que vous souhaitez explorer ou résoudre. Par exemple, si vous analysez des critiques de livres, vous pouvez identifier les facteurs qui influencent le plus l’attribution de bonnes notes ou encore étudier l’évolution des genres littéraires populaires au fil du temps. Restez toujours critique vis-à-vis de vos résultats et prenez en considération les biais potentiels dans votre méthode de collecte des données.

## <a></a>Conclusion

Dans ce tutoriel, vous avez appris à effectuer du web scraping avec Python, exploré les avantages de l’utilisation de proxies, et découvert comment les proxies rotatifs de [Bright Data](/) peuvent vous aider à contourner les blocages d’IP et à préserver votre anonymat.

Bien que créer vos propres solutions de scraping puisse être enrichissant, cela présente souvent des défis, tels que la maintenance du code, la gestion des CAPTCHA et le respect des politiques des sites web. C’est à ce niveau là que les [API de scraping de données Bright Data](https://brightdata.fr/products/web-scraper) peuvent s’avérer utiles Grâce à des fonctionnalités avancées telles que la [résolution automatique des CAPTCHA](https://brightdata.fr/products/web-unlocker/captcha-solver), la rotation des adresses IP et une analyse de données optimisée, Bright Data simplifie le processus de scraping, vous permettant de vous concentrer sur l’analyse des données plutôt que sur la gestion de l’infrastructure.

Inscrivez-vous à l’essai gratuit de Bright Data pour découvrir comment cette plateforme peut optimiser vos projets de web scraping, en vous offrant des solutions de collecte de données fiables, évolutives et efficaces, adaptées à vos besoins professionnels.



Contacter ventesEssai gratuit![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Table des matières







Dedicated Scraper APIs &amp; No-Code Scrapers

Over 1000 scrapers for all popular domains. Simplify your web scraping.

[See pricing](/pricing/web-scraper "See pricing")

Just want data? Skip scraping.

Hundreds of ready-to-use datasets from all popular domains.

[See pricing](/pricing/datasets "See pricing")







 [ ](https://news.ycombinator.com/submitlink?t=Le+scraping+de+texte%C2%A0%3A%C2%A0Un+tutoriel+%C3%A9tape+par+%C3%A9tape&u=https://brightdata.fr/blog/donnees-web/text-scraping) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Le+scraping+de+texte%C2%A0%3A%C2%A0Un+tutoriel+%C3%A9tape+par+%C3%A9tape&url=https://brightdata.fr/blog/donnees-web/text-scraping) [ ](http://www.reddit.com/submit?title=Le+scraping+de+texte%C2%A0%3A%C2%A0Un+tutoriel+%C3%A9tape+par+%C3%A9tape&url=https://brightdata.fr/blog/donnees-web/text-scraping)







##  Vous pourriez aussi être intéressé par

 [ ![OpenHuman with Bright Data](https://media.brightdata.fr/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.fr/blog/ai/openhuman-with-bright-data "Accès Web Prêt pour la Production dans OpenHuman via le CLI Bright Data")

 [AI



 ![Antonello Zanini](https://media.brightdata.fr/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Accès Web Prêt pour la Production dans OpenHuman via le CLI Bright Data

Intégrez le CLI Bright Data avec OpenHuman pour permettre un accès web prêt pour la production et la collecte de données pour les agents IA.



 09-Sep-2026

 14 min de lecture

 ](https://brightdata.fr/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.fr/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.fr/blog/donnees-web/multimodal-web-scraping-with-minimax "Scraping Web Multimodal avec MiniMax")

 [Données Web



 ![Antonello Zanini](https://media.brightdata.fr/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Scraping Web Multimodal avec MiniMax

Associez Bright Data Web Unlocker avec la vision MiniMax M3 pour extraire des données structurées à partir d’images et de captures d’écran de pages web.



 09-Sep-2026

 5 min de lecture

 ](https://brightdata.fr/blog/donnees-web/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.fr/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.fr/blog/ai/best-cli-tools-for-codex "Les 10 meilleurs outils CLI pour Codex en 2026 – Testés & Classés")

 [AI



 ![Daniel Shashko](https://media.brightdata.fr/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### Les 10 meilleurs outils CLI pour Codex en 2026 – Testés &amp; Classés

Les 10 outils CLI qui rendent Codex plus rapide et plus capable, en commençant par le Bright Data CLI pour un accès web réel depuis l’intérieur du sandbox.



 06-Sep-2026

 24 min de lecture

 ](https://brightdata.fr/blog/ai/best-cli-tools-for-codex)
