---
title: "Tutoriel sur le Scraping web avec AutoScraper"
slug: web-scraping-with-autoscraper
date: 2026-02-17T09:10:49+00:00
modified: 2026-02-17T09:10:50+00:00
permalink: https://brightdata.fr/blog/donnees-web/web-scraping-with-autoscraper
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)

# Tutoriel sur le Scraping web avec AutoScraper

AutoScraper est un outil Python convivial pour les débutants qui simplifie le Scraping web, en traitant les sites web structurés et dynamiques avec un minimum de codage.

 18 min de lecture





 [ ![](https://media.brightdata.fr/2023/04/Kumar-Harsh-50x50.png) ](https://brightdata.com/blog/authors/kumar-harsh)

 [Kumar Harsh

 ](https://brightdata.com/blog/authors/kumar-harsh)





 ![Web Scraping with AutoScraper](https://media.brightdata.fr/2024/10/Scraping_-Step-By-Step-Tutorial.svg)





[AutoScraper](https://github.com/alirezamika/autoscraper) est une bibliothèque Python qui simplifie le Scraping web en identifiant et en extrayant automatiquement les données des sites web sans inspection manuelle du code HTML. Contrairement aux outils de Scraping web traditionnels, AutoScraper apprend la structure des éléments de données à partir d’exemples de requêtes, ce qui en fait un excellent choix pour les développeurs débutants comme pour les plus expérimentés. Idéal pour des tâches telles que la collecte d’informations sur les produits, l’agrégation de contenu ou la réalisation d’Etudes de marché, AutoScraper gère efficacement les sites web dynamiques, sans aucune configuration complexe.

Dans cet article, vous apprendrez à utiliser AutoScraper avec Python pour le Scraping web.

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

La configuration d’AutoScraper est facile. Vous devez bien sûr avoir installé Python 3 ou une version ultérieure localement. Comme pour tout autre projet [de Scraping web Python](/blog/how-tos/web-scraping-with-python), il vous suffit d’exécuter quelques commandes pour créer un répertoire de projet, puis de créer et d’activer un environnement virtuel dans celui-ci :

```none
# Configurer le répertoire du projet
mkdir auto-scrape
cd auto-scrape

# Créer un environnement virtuel
python -m venv env
# Pour les utilisateurs Mac et Linux
source env/bin/activate
# Pour les utilisateurs Windows
venvScriptsactivate

```

L’utilisation d’un environnement virtuel simplifie la gestion des dépendances dans le projet.

Ensuite, installez la bibliothèque `autoscraper` en exécutant la commande suivante :

```none
pip install autoscraper

```

Vous devez également installer [pandas](https://pandas.pydata.org/) pour enregistrer les résultats du scraping dans un fichier CSV à la fin. pandas est une bibliothèque Python qui offre un outil d’analyse et de manipulation de données facile à utiliser. Elle vous permet de traiter et d’enregistrer facilement les résultats du scraping dans différents formats, tels que CSV, XLSX et JSON. Exécutez la commande suivante pour l’installer :

```none
pip install pandas

```

## <a></a>Sélectionnez un site web cible

Lorsque [vous scrapez des sites web publics](/blog/how-tos/html-web-scraping), veillez à vérifier les conditions d’utilisation (ToS) du site ou le fichier `robots.txt` pour vous assurer que le site autorise le scraping. Cela vous permettra d’éviter tout problème juridique ou éthique. De plus, il est préférable de sélectionner des sites web qui fournissent des données dans un format structuré, tel que des tableaux ou des listes, qui sont plus faciles à extraire.

Les outils de scraping traditionnels nécessitent souvent d’analyser la structure HTML d’une page web pour localiser les éléments de données cibles. Cela peut prendre beaucoup de temps et nécessite de bien connaître des outils tels que les consoles de développement des navigateurs. Cependant, AutoScraper simplifie cette étape en apprenant automatiquement la structure des données à partir d’exemples (également appelés `wanted_list`), ce qui élimine le besoin d’une inspection manuelle.

Dans ce tutoriel, vous commencerez par extraire des données de [la page « Countries of the World: A Simple Example](https://www.scrapethissite.com/pages/simple/) » (Pays du [monde](https://www.scrapethissite.com/pages/simple/): un [exemple](https://www.scrapethissite.com/pages/simple/) simple) [du site Scrape This Site](https://www.scrapethissite.com/pages/simple/), un bac à sable convivial pour les débutants, conçu pour tester les outils de scraping. Cette page a une structure simple, idéale pour démontrer les techniques de scraping de base. Une fois que vous aurez maîtrisé la structure de base, vous passerez à [la page « Hockey Teams: Forms, Searching and Pagination](https://www.scrapethissite.com/pages/forms/) » (Équipes de [hockey : formulaires, recherche et pagination](https://www.scrapethissite.com/pages/forms/)), qui présente une mise en page plus complexe.

## <a></a>Récupérer des données simples avec AutoScraper

Maintenant que vous avez identifié deux pages que vous souhaitez extraire, il est temps de commencer l’extraction !

Comme la [page « Countries of the World: A Simple Example](https://www.scrapethissite.com/pages/simple/) » (Pays du monde : un exemple simple) est simple, le script suivant peut être utilisé pour extraire une liste de pays, ainsi que leur capitale, leur population et leur superficie :

```none
# 1. Importer les dépendances
from autoscraper import AutoScraper
import pandas as pd

# 2. Définir l'URL du site à extraire
url = "https://www.scrapethissite.com/pages/simple/"

# 3. Instancier AutoScraper
scraper = AutoScraper()

# 4. Définir la liste souhaitée à l'aide d'un exemple tiré de la page web
# Cette liste doit contenir du texte ou des valeurs que vous souhaitez extraire
wanted_list = ["Andorre", "Andorre-la-Vieille", "84000", "468,0"]

# 5. Construisez le Scraper en fonction de la liste souhaitée et de l'URL
scraper.build(url, wanted_list)

# 6. Obtenez les résultats pour tous les éléments correspondants
results = scraper.get_result_similar(url, grouped=True)

# 7. Affichez les clés et les exemples de données pour comprendre la structure
print("Keys found by the Scraper:", results.keys())

# 8. Attribuez des colonnes en fonction des clés du Scraper et de l'ordre attendu des données.
columns = ["Nom du pays", "Capitale", "Superficie (km²)", "Population"]

# 9. Créez un DataFrame avec les données extraites.
data = {columns[i]: results[list(results.keys())[i]] for i in range(len(columns))}
df = pd.DataFrame(data)

# 10. Enregistrer le DataFrame dans un fichier CSV
csv_filename = 'countries_data.csv'
df.to_csv(csv_filename, index=False)

print(f"Les données ont été enregistrées avec succès dans {csv_filename}")

```

Ce code comporte des commentaires intégrés qui expliquent ce qui se passe, mais voici un bref résumé : le script commence par importer AutoScraper et pandas. Ensuite, vous définissez l’URL du site web cible. Puis, vous créez une instance du Scraper.

Voici maintenant la partie intéressante : au lieu de fournir des instructions détaillées au Scraper sur l’emplacement des données cibles sur le site web (comme vous le feriez pour d’autres Scrapers, probablement via XPath ou d’autres sélecteurs), vous fournissez simplement un exemple des données que vous recherchez. Sous le quatrième commentaire, les points de données pour l’un des pays sont fournis au Scraper sous forme de tableau (également appelé `wanted_list`).

Une fois la `wanted_list` prête, vous créez le Scraper à l’aide de l’URL et de la `wanted_list`. Le Scraper télécharge le site web cible et génère des règles qu’il stocke dans sa liste de pile. Il utilise ces règles pour extraire les données de n’importe quelle URL cible à l’avenir.

Dans le code sous le commentaire six, vous utilisez la méthode `get_result_similar` sur le modèle AutoScraper pour extraire les données de l’URL cible qui sont similaires aux données de la `wanted_list`. La ligne suivante est une simple instruction `d'impression` qui vous montre les ID des règles sous lesquelles les données ont été trouvées sur l’URL cible. Votre résultat devrait ressembler à ceci :

```none
Clés trouvées par le Scraper : dict_keys(['rule_4y6n', 'rule_gghn', 'rule_a6r9', 'rule_os29'])

```

Le code sous les commentaires huit et neuf crée le schéma d’en-tête pour votre fichier CSV et formate les données extraites dans un DataFrame pandas. Enfin, le code sous le commentaire dix enregistre les données dans le fichier CSV.

Une fois que vous avez exécuté ce script (en enregistrant le script précédent dans un fichier appelé `script.py` et en exécutant `python script.py` sur la ligne de commande), vous remarquerez qu’un nouveau fichier nommé `countries_data.csv` a été créé dans le répertoire du projet avec un contenu qui ressemble à ceci :

```none
Nom du pays,Capitale,Superficie (km²),Population
Andorre,Andorre-la-Vieille,84000,468,0
Émirats arabes unis,Abou Dhabi,4975593,82880,0
...246 lignes réduites
Zambie,Lusaka,13460305,752614,0
Zimbabwe, Harare, 11651858, 390580,0

```

Et voilà ! C’est aussi simple que cela de scraper des sites web simples avec AutoScraper.

## <a></a>Traiter et extraire des données à partir de sites web à la conception complexe

Lorsqu’il s’agit de sites web légèrement plus complexes, comme la [page Hockey Teams: Forms, Searching and Pagination](https://www.scrapethissite.com/pages/forms/) qui contient un tableau avec de nombreuses valeurs similaires, la technique présentée précédemment peut échouer. Vous pouvez essayer d’extraire le nom de l’équipe, l’année, les victoires, les défaites et d’autres champs de ce site web en utilisant la même méthode que celle présentée précédemment pour constater le problème par vous-même.

Heureusement, AutoScraper permet un apprentissage plus précis du modèle en élaguant les règles collectées lors de l’étape de construction avant d’utiliser le modèle pour extraire les données. Voici le code qui vous aidera à le faire :

```none
from autoscraper import AutoScraper
import pandas as pd

# Définir l'URL du site à scraper
url = "https://www.scrapethissite.com/pages/forms/"

def setup_model():

    # Instancier AutoScraper
    scraper = AutoScraper()

    # Définir la liste souhaitée à l'aide d'un exemple tiré de la page web
    # Cette liste doit contenir du texte ou des valeurs que vous souhaitez extraire
    wanted_list = ["Boston Bruins", "1990", "44", "24", "0.55", "299", "264", "35"]

    # Construire le Scraper à partir de la liste souhaitée et de l'URL
    scraper.build(url, wanted_list)

    # Obtenir les résultats pour tous les éléments correspondants
    results = scraper.get_result_similar(url, grouped=True)

    # Afficher les données pour comprendre la structure
    print(results)

    # Enregistrer le modèle
    scraper.save("teams_model.json")

def prune_rules():
    # Créer une instance d'Autoscraper
    scraper = AutoScraper()

    # Charger le modèle enregistré précédemment
    scraper.load("teams_model.json")

    # Mettre à jour le modèle pour ne conserver que les règles nécessaires
    Scraper.keep_rules(['rule_hjk5', 'rule_9sty', 'rule_2hml', 'rule_3qvv', 'rule_e8x1', 'rule_mhl4', 'rule_h090', 'rule_xg34'])

    # Enregistrer à nouveau le modèle mis à jour
    scraper.save("teams_model.json")

def load_and_run_model():
    # Créer une instance de Scraper
    scraper = Scraper()

    # Charger le modèle enregistré précédemment
    scraper.load("teams_model.json")

    # Obtenir les résultats pour tous les éléments correspondants
    results = Scraper.get_result_similar(url, grouped=True)

    # Attribuer des colonnes en fonction des clés du Scraper et de l'ordre attendu des données
    columns = ["Nom de l'équipe", "Année", "Victoires", "Défaites", "Pourcentage de victoires", "Buts marqués (GF)", "Buts encaissés (GA)", "+/-"]

    # Créer un DataFrame avec les données extraites
    data = {columns[i]: results[list(results.keys())[i]] for i in range(len(columns))}
    df = pd.DataFrame(data)

    # Enregistrer le DataFrame dans un fichier CSV
    csv_filename = 'teams_data.csv'
    df.to_csv(csv_filename, index=False)

    print(f"Les données ont été enregistrées avec succès dans {csv_filename}")

# setup_model()
# prune_rules()
# load_and_run_model()

```

Ce script contient trois méthodes : `setup_model`, `prune_rules` et `load_and_run_model`. La méthode `setup_model` est similaire à celle que vous avez vue précédemment. Elle crée une instance d’un Scraper, crée une `wanted_list`, construit le Scraper à l’aide de la `wanted_list`, extrait les données de l’URL cible à l’aide de ce Scraper, imprime les clés (*c’est-à-dire* les ID de règles collectés lors de cette extraction) et enregistre le modèle tel quel dans un fichier nommé `teams_model.json` dans le répertoire du projet.

Pour l’exécuter, décommentez la ligne `# setup_model()` dans le script précédent, enregistrez le script complet dans un fichier (*par exemple* script.py`) et exécutez python`script.py`. Votre sortie devrait ressembler à ceci :

```none
{'rule_hjk5': ['Boston Bruins', 'Buffalo Sabres', 'Calgary Flames', 'Chicago Blackhawks', 'Detroit Red Wings', 'Edmonton Oilers', 'Hartford Whalers', 'Los Angeles Kings', 'Minnesota North Stars', 'Montreal Canadiens', 'New Jersey Devils', 'New York Islanders', 'New York Rangers', 'Philadelphia Flyers', 'Pittsburgh Penguins', 'Quebec Nordiques', 'St. Louis Blues', 'Toronto Maple Leafs', 'Vancouver Canucks', 'Washington Capitals', 'Winnipeg Jets', 'Boston Bruins', 'Buffalo Sabres', 'Calgary Flames', 'Chicago Blackhawks'], 'rule_uuj6': ['Boston Bruins', Buffalo Sabres, Calgary Flames, Chicago Blackhawks, Detroit Red Wings, Edmonton Oilers, Hartford Whalers, Los Angeles Kings, Minnesota North Stars, Montreal Canadiens, New Jersey Devils, New York Islanders, New York Rangers, Philadelphia Flyers, Pittsburgh Penguins,Quebec Nordiques', 'St. Louis Blues', 'Toronto Maple Leafs', 'Vancouver Canucks', 'Washington Capitals', 'Winnipeg Jets', 'Boston Bruins', 'Buffalo Sabres', 'Calgary Flames', 'Chicago Blackhawks'], 'rule_9sty': ['1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_9nie » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_41rr » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_ufil » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_ere2 » : ['1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_w0vo » : ['1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_rba5 » : ['1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_rmae » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_ccvi » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_3c34 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_4j80 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_oc36 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_93k1 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_d31n » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_ghh5 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », «1991', '1991', '1991'], 'rule_5rne': ['1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_4p78 » : ['1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1990', '1991', '1991', '1991', '1991'], 'rule_qr7s': ['1990', '1990', '1990', '1990', « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_60nk » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_wcj7 » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_0x7y » : [« 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1990 », « 1991 », « 1991 », « 1991 », « 1991 »], « rule_2hml » : [« 44 », « 31 », « 46 », « 49 », « 34 », « 37 », « 31 », « 46 », « 27 », « 39 », « 32 », « 25 », « 36 », « 33 », « 41 », « 16 », « 47 », « 23 », « 28 », « 37 », « 26 », « 36 », « 31 », « 31 », « 36 »], « rule_swtb » : [« 24 »], « rule_e8x1 » : [« 0,55 », « 14 », « 0,575 », « 0,613 », « -25 », « 0 », « -38 », « 0,575 », « -10 », « 24 », « 8 », « -67 », « 32 », « -15 », « 0,512 », « -118 », « 0,588 », « -77 », « -72 », « 0 », « -28 », « -5 », « -10 », « -9 », « 21 »], « rule_3qvv » : [« 24 », « 30 », « 26 », « 23 », « 38 », « 37 », « 38 », « 24 », « 39 », « 30 », « 33 », « 45 », « 31 », « 37 », « 33 », « 50 », « 22 », '46', '43', '36', '43', '32', '37', '37', '29'], 'rule_n07w': ['24', '30', '26', '23', '38', '37', '38', '24', '39', '30', '33', « 45 », « 31 », « 37 », « 33 », « 50 », « 22 », « 46 », « 43 », « 36 », « 43 », « 32 », « 37 », « 37 », « 29 »], « rule_qmem » : [« 0,55 », « 0,388 », « 0,575 », '0,613', '0,425', '0,463', '0,388', '0,575', '0,338', '0,487', '0,4', '0,312', '0,45', '0,412', '0,512', '0,2', « 0,588 », « 0,287 », « 0,35 », « 0,463 », '0,325', '0,45', '0,388', '0,388', '0,45'], 'rule_b9gx' : ['264', '278', '263', '211', '298', '272', '276', '254', '266', '249', « 264 », « 290 », « 265 », « 267 », « 305 », « 354 », « 250 », « 318 », « 315 », « 258 », « 288 », « 275 », « 299 », « 305 », « 236 »], « rule_mhl4 » : [« 299 », « 292 », « 344 », « 284 », « 273 », « 272 », « 238 », « 340 », « 256 », « 273 », « 272 », « 223 », « 297 », « 252 », '342', '236', '310', '241', '243', '258', '260', '270', '289', '296', '257'], 'rule_24nt': ['264', '278', « 263 », « 211 », « 298 », « 272 », « 276 », « 254 », « 266 », « 249 », « 264 », « 290 », « 265 », « 267 », « 305 », « 354 », « 250 », « 318 », « 315 », « 258 », « 288 », « 275 », « 299 », « 305 », « 236 »], « rule_h090 » : [« 264 », « 278 », « 263 », « 211 », « 298 », « 272 », « 276 », « 254 », « 266 », « 249 », « 264 », « 290 », « 265 », « 267 », « 305 », « 354 », « 250 », « 318 », « 315 », « 258 », « 288 », « 275 », « 299 », « 305 », « 236 »], « rule_xg34 » : [« 35 », « 14 », « 81 », « 73 », « -25 », « 0 », « -38 », « 86 », « -10 », « 24 », « 8 », « -67 », « 32 », « -15 », « 37 », « -118 », « 60 », « -77 », « -72 », « 0 », « -28 », « -5 », « -10 », « -9 », « 21 »]

```

Ceci montre l’ensemble des données collectées par AutoScraper dans son appel `get_result_similar` à partir du site web cible. Vous remarquerez que ces données contiennent de nombreux doublons. Cela s’explique par le fait qu’AutoScraper ne se contente pas de collecter les données du site web cible, mais tente également de leur donner un sens en devinant les relations entre elles et en créant des groupes de points de données appelés règles qu’il estime être liés les uns aux autres. S’il parvient à regrouper correctement les données, vous pourrez extraire très facilement des données de sites web similaires, comme vous l’avez fait dans l’exemple précédent.

Cependant, AutoScraper semble avoir des difficultés avec ce site web. Comme il contient beaucoup de chiffres, AutoScraper finit par supposer un grand nombre de corrélations entre les différents chiffres, ce qui vous donne un ensemble de données volumineux contenant des Points de données en double.

Vous devez maintenant analyser attentivement cet ensemble de données et sélectionner les règles qui contiennent les données correctes (*c’est-à-dire qui* contiennent uniquement les données correctes d’une colonne dans le bon ordre) pour votre tâche de scraping.

Pour cette sortie, les règles suivantes contenaient les données correctes (trouvées en examinant manuellement certains points de données et en s’assurant que chacune des règles sélectionnées recevait vingt-cinq éléments de données, soit le nombre de lignes du tableau de la page cible) :

```none
['rule_hjk5', 'rule_9sty', 'rule_2hml', 'rule_3qvv', 'rule_e8x1', 'rule_mhl4', 'rule_h090', 'rule_xg34']

```

Vous devez mettre à jour cela dans la méthode `prune_rules`. Ensuite, vous devez commenter la ligne `setup_model()` et décommenter la ligne `prune_rules()` dans le script, puis l’exécuter. Cette fois, il charge le modèle précédemment créé à partir du fichier `teams_model.json`, supprime tout sauf les règles répertoriées, puis le sauvegarde à nouveau dans le même fichier. Vous pouvez même consulter le contenu du fichier `teams_model.json` pour voir quelles règles y sont actuellement stockées. Une fois que vous avez terminé, votre modèle est prêt.

Vous pouvez maintenant exécuter la méthode `load_and_run_model` en commentant les lignes `prune_rules` et `prune_rules`, en décommentant la ligne `load_and_run_model` dans le même script et en le réexécutant. Il extrait et enregistre les données appropriées pour vous dans un fichier nommé `teams_data.csv` dans le répertoire du projet, tout en affichant le résultat suivant :

```none
Les données ont été enregistrées avec succès dans teams_data.csv

```

Voici à quoi ressemble le fichier `teams_data.csv` après une exécution réussie :

```none
Nom de l'équipe, Année, Victoires, Défaites, Pourcentage de victoires, Buts marqués (GF), Buts encaissés (GA), +/-
Boston Bruins, 1990, 44, 0,55, 24, 299, 264, 35
Buffalo Sabres,1990,31,14,30,292,278,14
...21 lignes supplémentaires
Calgary Flames,1991,31,-9,37,296,305,-9
Chicago Blackhawks,1991,36,21,29,257,236,21

```

Vous pouvez consulter le code développé dans cet article dans [ce dépôt GitHub](https://github.com/krharsh17/auto-scrape).

## <a></a>Défis courants avec AutoScraper

Si AutoScraper est très efficace pour les cas d’utilisation simples où le site web cible contient un ensemble de données relativement petit avec des Points de données distincts, il peut être fastidieux à configurer pour des cas d’utilisation complexes, comme un site web avec un tableau comme celui que vous avez vu précédemment. De plus, AutoScraper ne prend pas en charge le rendu JavaScript, vous devez donc l’intégrer à un module comme [Splash](https://pypi.org/project/splash/) ou à une bibliothèque complète comme [Selenium](/blog/how-tos/using-selenium-for-web-scraping) ou [Puppeteer](/blog/how-tos/web-scraping-puppeteer).

Si vous rencontrez des problèmes tels que des blocages d’IP ou si vous devez personnaliser les en-têtes lors du scraping, AutoScraper prend en charge la spécification d’un ensemble de paramètres de requête supplémentaires utilisés par son module de requêtes, comme ceci :

```none
# construire le Scraper sur une URL initiale
scraper.build(
    url,
    wanted_list=wanted_list,
    request_args=dict(proxies=proxies) # c'est ici que vous pouvez passer une liste de Proxies ou d'en-têtes client
)

```

Par exemple, voici comment vous pouvez définir un agent utilisateur personnalisé et un Proxy pour le scraping avec AutoScraper :

```none
request_args = {
  "headers: {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36
            (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"  # Vous pouvez personnaliser cette valeur avec l'agent utilisateur de votre choix. Cette valeur est celle utilisée par défaut par Autoscraper.
  },
  "proxies": {
    "http": "http://user:<a class="__cf_email__" data-cfemail="1969786a6a5928293728293728372829" href="/cdn-cgi/l/email-protection">[email protected]</a>:3128/" # Exemple de Proxy pour vous montrer comment utiliser les valeurs du port Proxy, de l'hôte, du nom d'utilisateur et du mot de passe.
  }
}
# créer le Scraper sur une URL initiale
scraper.build(
    url,
    wanted_list=wanted_list,
    request_args=request_args
)

```

Cependant, si vous souhaitez éviter d’être bloqué à plusieurs reprises, vous avez besoin d’un bon Proxy optimisé pour le Scraping web. Pour cela, vous devriez envisager d’utiliser les[Proxys résidentiels Bright Data](/proxy-types/residential-proxies), qui couvrent plus de 150 millions d’adresses IP résidentielles dans 195 pays.

La bibliothèque AutoScraper utilise en interne la bibliothèque Python request pour envoyer des requêtes au site web cible, et elle ne prend pas en charge de manière inhérente la limitation du débit. Pour gérer les restrictions de limitation du débit imposées par les sites web, vous devez configurer manuellement une fonction de limitation ou utiliser une solution préconstruite telle que la bibliothèque [`ratelimit`](https://pypi.org/project/ratelimit/).

Comme AutoScraper ne fonctionne qu’avec des sites web non dynamiques, il ne peut pas du tout gérer les sites protégés par CAPTCHA. Dans ce cas, il est judicieux d’utiliser une solution plus détaillée comme [l’API Bright Data Scraping web](/products/web-scraper), qui vous fournit des données structurées provenant de sites tels que LinkedIn, Amazon et Zillow.

## <a></a>Conclusion

Dans cet article, vous avez découvert ce qu’est [AutoScraper](https://github.com/alirezamika/autoscraper) et comment l’utiliser pour extraire des données de sites web simples et complexes. Comme vous l’avez vu, AutoScraper s’appuie sur un simple appel `de requêtes` pour accéder aux sites web cibles, ce qui signifie qu’il a souvent des difficultés avec les sites web dynamiques et ceux protégés par des défis tels que CAPTCHA. De plus, vous devez utiliser des Proxy lors du Scraping web, car la plupart des sites web peuvent identifier les clients dont le trafic est anormalement élevé. Dans ce cas, [Bright Data](/) peut vous aider.

Bright Data est l’un des principaux fournisseurs de réseaux de proxys, de scrapers web alimentés par l’IA et d’ensembles de données prêts à l’emploi. Inscrivez-vous dès maintenant et commencez à explorer les produits de Bright Data, y compris un essai gratuit !



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=Tutoriel+sur+le+Scraping+web+avec+AutoScraper&u=https://brightdata.fr/blog/donnees-web/web-scraping-with-autoscraper) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Tutoriel+sur+le+Scraping+web+avec+AutoScraper&url=https://brightdata.fr/blog/donnees-web/web-scraping-with-autoscraper) [ ](http://www.reddit.com/submit?title=Tutoriel+sur+le+Scraping+web+avec+AutoScraper&url=https://brightdata.fr/blog/donnees-web/web-scraping-with-autoscraper)







##  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)
