Tout système d'intelligence artificielle et d'apprentissage automatique est, au fond, un argument à partir de données. Un modèle ne raisonne pas à partir de premiers principes ; il généralise à partir d'exemples qu'il a déjà vus. Changez les exemples et vous changez le comportement. C'est pourquoi la décision la plus importante dans tout projet d'IA est rarement l'architecture ou l'optimiseur, c'est ce qui entre dans l'ensemble d'entraînement et d'où viennent ces données.

Pendant une longue période, la réponse était "quelques datasets académiques propres". Cette époque est révolue. Les grands modèles de langage et les systèmes ML modernes que les gens utilisent chaque jour ont été entraînés sur d'énormes corpus assemblés à partir du web ouvert : articles, catalogues de produits, forums, documentation, avis, code. Si vous voulez construire quelque chose de compétitif, vous devez finalement collecter vous-même des données web, à grande échelle, et les transformer en lignes d'entraînement. Cet article explique d'où proviennent réellement les données d'IA et de ML, pourquoi le web est la source dominante, et comment les collecter de manière fiable avec la Crawling API et le Smart AI Proxy au lieu de lutter contre les blocages manuellement.

L'IA, le ML et la dépendance qu'ils partagent

Il est utile d'être précis sur les deux termes, car ils sont utilisés de manière interchangeable alors qu'ils ne sont pas identiques. L'intelligence artificielle est l'objectif général : des systèmes qui effectuent des tâches que nous associons à l'intelligence humaine, de répondre à des questions à conduire une voiture. L'apprentissage automatique est la méthode dominante pour y parvenir. Plutôt que de coder à la main des règles pour chaque situation, vous donnez à un algorithme un grand ensemble d'exemples et vous le laissez apprendre les schémas qui associent les entrées aux sorties.

L'apprentissage automatique se divise selon la façon dont ces exemples sont étiquetés. L'apprentissage supervisé s'entraîne sur des paires étiquetées (un email et l'étiquette "spam", une page produit et sa catégorie) et apprend à reproduire les étiquettes sur de nouvelles entrées. L'apprentissage non supervisé ne reçoit pas d'étiquettes et trouve plutôt la structure par lui-même, regroupant des éléments similaires ou compressant les données en représentations utiles. Les grands modèles de langage derrière le boom de l'IA actuel s'appuient fortement sur une variante auto-supervisée : le modèle apprend en prédisant des tokens masqués ou suivants dans du texte brut, ce qui signifie que le texte lui-même fournit le signal et vous en avez besoin en grande quantité.

La constante unique

Supervisé, non supervisé ou auto-supervisé, chaque approche a la même dépendance : un grand dataset représentatif et actuel. L'algorithme est principalement une recette fixe. Les données sont la variable qui décide si le résultat est précis ou inutile, c'est pourquoi "où est-ce que j'obtiens les données" est la vraie question d'ingénierie derrière la plupart des travaux d'IA et de ML.

Pourquoi les modèles vivent ou meurent selon leurs données

Il est tentant de traiter le modèle comme la partie intelligente et les données comme de la plomberie. En pratique, le rapport est inversé. Trois propriétés d'un dataset façonnent presque tout en aval.

Volume. Les modèles modernes ont des millions à des milliards de paramètres, et chaque paramètre est un degré de liberté qui nécessite des preuves pour être correctement défini. Trop peu de données et le modèle mémorise ses exemples au lieu de généraliser, le mode d'échec connu sous le nom de surapprentissage. La raison pour laquelle les corpus à l'échelle du web comptent est simplement que le web est l'un des seuls endroits où vous pouvez trouver suffisamment de texte varié et d'enregistrements structurés pour satisfaire cet appétit.

Fraîcheur. Un modèle entraîné sur un instantané d'il y a trois ans croit que le monde ressemble à ce qu'il était il y a trois ans. Les prix, les gammes de produits, l'argot, les actualités et les idiomes de code évoluent tous. Si votre application raisonne sur le monde actuel, vos données d'entraînement et d'évaluation doivent être collectées depuis le web actuel, pas tirées d'une archive périmée.

Représentativité. Un modèle apprend uniquement la distribution qu'il voit. Scrapez un seul détaillant et votre modèle de prix connaît ce détaillant ; scrapez vingt et il apprend le marché. Le biais dans les données produit du biais dans les résultats, donc la largeur de votre collection borne directement la capacité du modèle à généraliser au-delà de la tranche que vous avez collectée.

Notez que ces trois propriétés sont des problèmes de collecte, pas des problèmes de modélisation. Vous ne pouvez pas vous en sortir par l'optimisation avec un dataset trop petit, trop vieux ou trop étroit. C'est pourquoi les équipes qui construisent de vrais systèmes d'IA et de ML passent tant de temps sur l'acquisition de données, et pourquoi la couche de crawling web en dessous mérite une vraie attention.

D'où proviennent les données d'IA et de ML

Les données d'entraînement pour l'apprentissage automatique arrivent via quelques canaux, et la plupart des projets réels en combinent plusieurs.

Les datasets publics sélectionnés (ImageNet, Common Crawl, données gouvernementales ouvertes) sont un bon point de départ et ne coûtent rien, mais tout le monde s'entraîne également dessus, donc ils donnent rarement un avantage et sont souvent obsolètes. L'étiquetage manuel et la collecte interne produisent des données de haute qualité, spécifiques à la tâche, mais ils sont lents et coûteux et ne passent pas à l'échelle des corpus de taille web. Les données sous licence de fournisseurs comblent des lacunes spécifiques quand le budget le permet.

Pour la plupart des équipes, la source décisive est le web ouvert lui-même, collecté via le scraping web. Le web est le plus grand, le plus frais et le plus divers corpus de texte et d'enregistrements structurés qui existe, et il couvre presque tous les domaines que vous pourriez vouloir modéliser : fiches e-commerce pour l'intelligence des prix, avis pour l'analyse de sentiment, offres d'emploi pour les modèles du marché du travail, documentation et fils de discussion pour les systèmes de code et de questions-réponses. Le problème est que le collecter de manière fiable est plus difficile que ça n'en a l'air, ce qui est l'écart que la section suivante aborde.

La partie difficile : collecter des données web à grande échelle

Écrire un script qui récupère une page est trivial. En écrire un qui récupère un million de pages sur des dizaines de sites, semaine après semaine, sans s'arrêter est un problème différent. Trois obstacles apparaissent presque immédiatement.

Premièrement, les défenses anti-bot. Les sites commerciaux surveillent le trafic automatisé et répondent avec des CAPTCHA, des limites de débit et des bannissements d'IP. Un extracteur naïf depuis une seule IP de datacenter est signalé en quelques minutes, et un dataset qui arrête de se remplir à mi-parcours n'est pas un dataset du tout.

Deuxièmement, le rendu côté client. Une grande part du web moderne construit son contenu dans le navigateur avec JavaScript. Un simple requests.get retourne la coquille HTML sans aucune des données recherchées, donc vous avez besoin de quelque chose qui exécute réellement la page comme un vrai navigateur avant de la lire.

Troisièmement, l'échelle et la fiabilité. Les proxies doivent être tournés, les échecs doivent être retentés, et l'ensemble du pipeline doit continuer à fonctionner sans surveillance. Construire et surveiller cette infrastructure représente la majorité du travail, et cela n'a rien à voir avec le modèle que vous voulez réellement entraîner.

C'est exactement là où Crawlbase s'insère. La Crawling API prend une URL, la récupère via des IPs résidentielles rotatives, rend le JavaScript dans un vrai navigateur, et retourne du HTML fini ou du markdown prêt pour les LLMs en un seul appel. Le Smart AI Proxy (aussi appelé AI Proxy) vous donne la même rotation résidentielle comme endpoint proxy drop-in quand vous préférez router le trafic de votre propre client. Dans les deux cas, le blocage, le rendu et la gestion des IPs cessent d'être votre problème, et vous pouvez consacrer vos efforts au dataset.

Crawlbase Crawling API

Les données d'entraînement ne sont utiles que si vous pouvez réellement les collecter. La Crawling API récupère les pages via des IPs résidentielles rotatives et rend JavaScript dans un vrai navigateur, retournant du HTML propre ou du markdown depuis un seul appel, pour qu'une collecte d'un million de pages continue de se remplir au lieu de s'arrêter sur des CAPTCHA. Pointez-la sur une page publique en niveau gratuit et voyez une ligne atterrir dans votre dataset.

Construire un dataset d'entraînement : un exemple exécutable

Les concepts sont plus faciles à faire confiance quand vous pouvez les exécuter. Le script ci-dessous collecte un petit dataset structuré depuis un site de librairie test public, le type de données de catalogue que vous pourriez alimenter à un modèle de prix ou de catégorie. Il récupère chaque page via la Crawling API, extrait quelques champs, et écrit une ligne par élément en CSV et JSON pour que le résultat tombe directement dans un pipeline d'entraînement.

Vous avez besoin de Python 3.8 ou plus récent et du client officiel Crawlbase. Installez-le, et récupérez un token depuis votre tableau de bord Crawlbase après vous être inscrit.

bash
python -m venv ml_data_env
source ml_data_env/bin/activate

pip install crawlbase beautifulsoup4

Sur Windows, activez l'environnement avec ml_data_env\Scripts\activate au lieu de la ligne source. Voici maintenant le collecteur. Il crawle quelques pages de catalogue, extrait les champs avec BeautifulSoup, et sauvegarde des lignes propres.

python
import csv
import json
from crawlbase import CrawlingAPI
from bs4 import BeautifulSoup

api = CrawlingAPI({"token": "YOUR_CRAWLBASE_TOKEN"})

pages = [
    "https://books.toscrape.com/catalogue/page-1.html",
    "https://books.toscrape.com/catalogue/page-2.html",
    "https://books.toscrape.com/catalogue/page-3.html",
]

def fetch_html(url):
    options = {"ajax_wait": "true", "page_wait": 2000}
    response = api.get(url, options)
    if response["status_code"] != 200:
        raise RuntimeError(f"Fetch failed for {url}: {response['status_code']}")
    return response["body"].decode("utf-8")

def parse_rows(html):
    soup = BeautifulSoup(html, "html.parser")
    rows = []
    for card in soup.select("article.product_pod"):
        title = card.select_one("h3 a")["title"].strip()
        price = card.select_one(".price_color").text.strip()
        rating = card.select_one(".star-rating")["class"][1]
        in_stock = "In stock" in card.select_one(".availability").text
        rows.append({
            "title": title,
            "price": price,
            "rating": rating,
            "in_stock": in_stock,
        })
    return rows

def build_dataset():
    dataset = []
    for url in pages:
        try:
            dataset.extend(parse_rows(fetch_html(url)))
        except RuntimeError as err:
            print(f"Skipping page: {err}")
    return dataset

data = build_dataset()
print(f"Collected {len(data)} rows")

Les deux options d'attente font fonctionner le même code quand vous le pointez sur une cible rendue côté client : ajax_wait attend le contenu asynchrone et page_wait s'arrête un nombre fixe de millisecondes pour que les éléments tardifs apparaissent avant la capture. La vérification du code de statut transforme une récupération échouée en une erreur claire au lieu d'une ligne silencieusement vide, ce qui compte quand une exécution s'étend sur des milliers de pages et que vous devez faire confiance à ce qui a atterri dans le dataset.

Sauvegarder les lignes pour l'entraînement

Un dataset n'est utile que dans un format que votre code d'entraînement peut lire. Le CSV convient aux modèles tabulaires et à l'inspection rapide dans un tableur ; le JSON convient aux enregistrements imbriqués et à la plupart des pipelines Python. Écrivez les deux pour que la même collecte alimente l'un ou l'autre chemin.

python
def save_csv(rows, path="training_data.csv"):
    if not rows:
        return
    with open(path, "w", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=rows[0].keys())
        writer.writeheader()
        writer.writerows(rows)

def save_json(rows, path="training_data.json"):
    with open(path, "w") as f:
        json.dump(rows, f, indent=2)

save_csv(data)
save_json(data)
print("Saved training_data.csv and training_data.json")

Exécutez les deux extraits ensemble et vous obtenez des lignes propres et étiquetées prêtes pour un modèle. La structure est délibérément ennuyeuse : un enregistrement par élément, des clés cohérentes, pas de surprises. C'est ce que le code d'entraînement veut.

json
[
  {
    "title": "A Light in the Attic",
    "price": "£51.77",
    "rating": "Three",
    "in_stock": true
  }
]
Collectez, puis nettoyez

Les lignes brutes scrapées ne sont pas prêtes pour l'entraînement par elles-mêmes. Avant qu'un modèle les touche, vous normalisez les types (transformez cette chaîne de prix en nombre), supprimez les doublons, gérez les champs manquants et équilibrez les catégories pour que l'ensemble soit représentatif. L'étape de collecte ici vous procure des données brutes fiables ; l'étape suivante est de les mettre en forme, que nous couvrons dans structurer et nettoyer les données scrapées du web pour l'IA et le ML.

D'un script à un vrai pipeline

L'exemple ci-dessus est une démonstration. Un dataset de production pour l'intelligence artificielle et l'apprentissage automatique s'exécute sur des milliers ou des millions d'URLs, se rafraîchit selon un calendrier, et ne peut pas se permettre de s'arrêter. Trois étapes vous y amènent.

Passez en asynchrone pour le volume. Récupérer des pages une par une plafonne votre débit à la vitesse d'un seul aller-retour. Pour les grands travaux, envoyez les URLs au Crawler asynchrone, qui met le travail en file d'attente et pousse les pages finies vers un webhook à mesure qu'elles se complètent, pour que vous collectiez à grande échelle sans gérer vous-même une boucle de récupération.

Utilisez la sortie pré-parsée là où elle existe. Quand vous collectez depuis des sites bien connus de manière répétée (un grand détaillant, un tableau d'offres d'emploi), la Crawling API retourne du JSON structuré pour les cibles supportées directement, vous permettant d'éviter d'écrire et de maintenir des sélecteurs. Pour les mises en page inhabituelles ou ponctuelles, l'approche BeautifulSoup ci-dessus reste le recours flexible. Voir le scraping web pour l'apprentissage automatique pour plus d'informations sur l'adéquation de la méthode de collecte au modèle.

Traitez la fraîcheur comme un travail, pas comme une action ponctuelle. Parce que les modèles dérivent à mesure que le monde change, planifiez des crawls récurrents et ajoutez de nouvelles lignes plutôt que de scraper une fois et d'oublier. Un dataset qui se met à jour chaque semaine maintient votre modèle à jour avec les prix actuels, le langage actuel et le comportement actuel.

Si vous câblez un agent IA pour extraire du contexte web en direct au moment de l'inférence plutôt que seulement à l'entraînement, le Web MCP expose la même récupération et le même parsing via le Model Context Protocol pour qu'un modèle puisse demander des pages directement. Pour des volumes très élevés ou un routage personnalisé et des SLA, le niveau enterprise couvre le débit dédié.

Récapitulatif

Points clés

  • Les données sont le produit. En intelligence artificielle et en apprentissage automatique, l'algorithme est principalement fixe ; le dataset est la variable qui décide si le modèle est précis ou inutile.
  • Le volume, la fraîcheur et la largeur sont des problèmes de collecte. Vous ne pouvez pas vous en sortir par l'optimisation avec un dataset trop petit, trop vieux ou trop étroit, donc la couche de crawling mérite une vraie attention.
  • Le web est la source dominante. Les datasets sélectionnés et l'étiquetage manuel ont leur place, mais le web ouvert est le plus grand, le plus frais et le plus divers corpus de données d'entraînement, collecté via le scraping web.
  • La collecte fiable est la partie difficile. Les défenses anti-bot, le rendu côté client et l'échelle défont les extracteurs naïfs ; la Crawling API et le Smart AI Proxy gèrent le blocage, le rendu et la rotation des IPs pour vous.
  • Collectez, puis mettez en forme. Sauvegardez des lignes propres en CSV ou JSON, puis normalisez les types, supprimez les doublons et équilibrez les catégories avant l'entraînement.
  • Mettez à l'échelle avec l'asynchrone et les calendriers. Déplacez les grands travaux vers le Crawler asynchrone, réutilisez la sortie pré-parsée là où elle existe, et recrawlez selon un calendrier pour maintenir le dataset à jour.

Foire aux questions

Quelle est la différence entre l'intelligence artificielle et l'apprentissage automatique ?

L'intelligence artificielle est l'objectif général de construire des systèmes qui effectuent des tâches que nous associons à l'intelligence humaine. L'apprentissage automatique est la méthode dominante pour atteindre cet objectif : au lieu de coder des règles à la main, vous entraînez un algorithme sur un grand ensemble d'exemples et le laissez apprendre les schémas. Ainsi, l'apprentissage automatique est un sous-ensemble de l'intelligence artificielle, et presque tous les systèmes d'IA notables d'aujourd'hui sont construits avec lui.

Pourquoi le scraping web est-il important pour l'IA et le ML ?

Les modèles apprennent à partir d'exemples, et ils ont besoin d'un ensemble large, frais et représentatif. Le web ouvert est la plus grande et la plus actuelle source de ces données, couvrant presque tous les domaines que vous pourriez vouloir modéliser. Le scraping web est la façon dont vous transformez ces pages en lignes d'entraînement, c'est pourquoi la collecte de données est l'une des étapes les plus importantes dans tout projet sérieux d'IA ou de ML.

De combien de données ai-je besoin pour entraîner un modèle ?

Cela dépend du modèle et de la tâche : un classificateur simple peut apprendre à partir de milliers de lignes, tandis que les grands modèles de langage s'entraînent sur des milliards de tokens. La règle générale est que plus de paramètres nécessitent plus d'exemples pour éviter le surapprentissage, et une plus grande couverture produit une meilleure généralisation. Cet appétit est exactement la raison pour laquelle les équipes se tournent vers la collecte à l'échelle du web plutôt que vers de petits ensembles sélectionnés.

Puis-je simplement utiliser des datasets publics au lieu de scraper ?

Les datasets publics sont un bon point de départ gratuit, mais ils ont deux limites : tout le monde s'entraîne également dessus, donc ils donnent rarement un avantage, et ils sont souvent obsolètes. Si votre application raisonne sur le monde actuel ou un domaine de niche, vous devrez collecter vous-même des données actuelles et spécifiques à la tâche depuis le web, souvent parallèlement aux ensembles publics.

Comment collecter des données web sans être bloqué ?

Un extracteur naïf depuis une seule IP de datacenter est rapidement signalé par les défenses anti-bot. La Crawling API récupère les pages via des IPs résidentielles rotatives et rend JavaScript dans un vrai navigateur, pour que les collectes continuent de se remplir sans déclencher de CAPTCHA ni de limites de débit. Si vous préférez router le trafic de votre propre client, le Smart AI Proxy vous donne la même rotation comme endpoint drop-in. Le playbook complet est dans comment scraper des sites web sans être bloqué.

Que faire avec les données après les avoir scrapées ?

Les lignes brutes scrapées ne sont pas prêtes pour l'entraînement. Vous normalisez les types de données, supprimez les doublons, gérez les champs manquants et équilibrez les catégories pour que l'ensemble soit représentatif, puis vous le divisez en portions d'entraînement et d'évaluation. Sauvegarder d'abord des lignes propres en CSV ou JSON, comme dans l'exemple ci-dessus, vous donne une base stable à nettoyer et à mettre en forme pour le modèle.

Commencer à construire

Crawlez n'importe quel site à grande échelle, sans combattre l'infrastructure.

Crawlbase gère les proxies, les empreintes et les CAPTCHA afin que votre équipe livre des pipelines de données au lieu de maintenir la plomberie de crawl. 1 000 requêtes gratuites, sans carte requise.

En libre-service · Sans appel commercial requis · Volumes de crawl entreprise disponibles