ScrapegraphAI : l'utilisation des LLM pour le Web Scraping

Guides, Python, Scraping, 27 septembre 20245 minutes de lecture

Le web scraping a évolué, passant d'une simple extraction basée sur des règles à des techniques plus avancées qui s'appuient sur de grands modèles de langage (LLM) pour l'extraction de données en fonction du contexte. ScrapegraphAI est à l'avant-garde de cette évolution, permettant le web scraping grâce à des LLM puissants comme OpenAI, Gemini, et même des modèles locaux comme Ollama. Dans ce blog, nous verrons ce qu'est ScrapegraphAI, comment elle fonctionne et nous présenterons un exemple concret de scraping de données à partir d'un site web avec intégration de proxy.

Qu'allez-vous apprendre ?

Dans ce blog, nous aborderons les sujets suivants :

  • Qu'est-ce que ScrapegraphAI et comment fonctionne-t-elle ?
  • L'utilisation de base de ScrapegraphAI pour le scraping de sites web
  • Comment intégrer proxys pour une meilleure performance
  • Un exemple pratique utilisant le modèle GPT-4o-mini d'OpenAI pour extraire des données sur les livres du site Web Books to Scrape.

Qu'est-ce que ScrapegraphAI et comment fonctionne-t-elle ?

ScrapegraphAI est un cadre robuste de scraping web (open source) qui s'appuie sur de grands modèles de langage pour extraire dynamiquement des données de sites web. Contrairement aux scrapers traditionnels qui s'appuient sur des sélecteurs CSS rigides ou XPath, ScrapegraphAI utilise des LLM pour interpréter et extraire des données structurées à partir d'un large éventail de sources, y compris des pages web dynamiques et des fichiers tels que des PDF. Il suffit de spécifier les informations recherchées et de laisser ScrapeGraphAI faire le gros du travail, ce qui constitue une option plus souple et nécessitant moins de maintenance que les outils de scraping traditionnels. L'une des principales caractéristiques de ScrapegraphAI est sa capacité à permettre aux utilisateurs de définir un schéma pour les données qu'ils souhaitent extraire. Vous pouvez spécifier un format structuré pour votre sortie, et ScrapegraphAI ajustera les données extraites pour qu'elles correspondent à ce schéma.

L'une des caractéristiques les plus remarquables de ScrapegraphAI est sa flexibilité dans le choix des LLM, avec la prise en charge de :

  • Les modèles GPT d'OpenAI comme GPT-3.5 et GPT-4o-mini
  • Gemini pour des cas d'utilisation plus spécifiques
  • Des modèles locaux utilisent Ollama pour des solutions de scraping privées et rentables

Pipelines de raclage des clés

ScrapegraphAI propose plusieurs pipelines de scraping standard pour répondre à différents besoins. Parmi les plus courants, on peut citer

  • SmartScraperGraph: Un scraper à page unique qui n'a besoin que d'une invite de l'utilisateur et d'une source d'entrée (site web ou fichier local).
  • SearchGraph: Extrait des informations des n premiers résultats de recherche d'un moteur de recherche.
  • SpeechGraph: Récupère les données d'une page et génère un fichier audio à partir des résultats.
  • ScriptCreatorGraph: Scrape une seule page et génère un script Python pour de futures extractions.
  • SmartScraperMultiGraph: Récupère les données de plusieurs pages à l'aide d'une seule invite et d'une liste d'URL.
  • ScriptCreatorMultiGraph: Similaire au précédent mais génère des scripts Python pour le scraping multi-pages.

Dans la section suivante, nous nous concentrerons sur le SmartScraperGraph, qui permet le scraping d'une seule page en fournissant simplement une invite et une URL source.

Utilisation de base de ScrapegraphAI

Conditions préalables

Pour continuer, vous devez installer quelques dépendances. Vous pouvez le faire en exécutant la commande suivante :

pip install scrapegraphai openai python-dotenv
 installation de playwright
  • scrapegraphai: Il s'agit du paquetage de base pour ScrapegraphAI.
  • openai: Nous utiliserons le modèle GPT-4o-mini d'OpenAI pour le scraping.
  • python-dotenv: Cela nous permettra de charger de manière sécurisée des variables d'environnement comme les clés d'API à partir d'un fichier .env.

Une fois que vous les avez installés, assurez-vous d'avoir votre clé API OpenAI prête. Stockez-la dans un fichier .env pour sécuriser vos informations d'identification :

OPENAI_APIKEY=votre_clé_openai_api

Exemple de code : Récupérer des données de Books to Scrape

Supposons que nous voulions extraire des informations sur tous les livres présents sur Books to Scrape, y compris :

  • Nom du livre
  • Prix
  • Disponibilité
  • Commentaires

Voici un exemple de code utilisant le pipeline SmartScraperGraph de ScrapegraphAI :

import os
from dotenv import load_dotenv
from scrapegraphai.graphs import SmartScraperGraph

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define configuration for the LLM
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)


if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Explication du code :

  • Configuration LLM: Nous configurons ScrapegraphAI de manière à ce qu'elle utilise le système de gestion de l'information d'OpenAI. GPT-4o-mini en fournissant la clé API et en spécifiant le nom du modèle.
  • Invite: L'invite définie par l'utilisateur demande à l'IA d'extraire du site Web des informations sur chaque livre, notamment le nom, le prix, la disponibilité et les critiques.
  • URL de la source: Nous indiquons l'URL du site web que nous voulons récupérer.
  • Utilisation du grattoir: Le exécuter() lance le processus d'extraction et le résultat est imprimé sous la forme d'une liste de dictionnaires, chacun contenant des informations sur un livre.

Exemple de sortie

Voici un exemple de ce que pourrait être le résultat :

{'Book Name': 'A Light in the Attic', 'Price': '£51.77', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Tipping the Velvet', 'Price': '£53.74', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Soumission', 'Price': '£50.10', 'Availability': 'In stock', 'Reviews': 'NA'},
{'Book Name': 'Sharp Objects', 'Price': '£47.82', 'Availability': 'In stock', 'Reviews': 'NA'},
# ... more books ...

Comme vous pouvez le voir, le scraper réussit à extraire les détails de chaque livre dans un format structuré, prêt à être utilisé dans votre pipeline de données.

Intégration du proxy

Lorsque vous scrapez à grande échelle ou que vous ciblez des sites web avec des mesures anti-scraping, l'intégration de proxys devient essentielle pour éviter les interdictions d'IP, les captchas et les limitations de taux. L'utilisation de proxys permet non seulement d'assurer l'anonymat, mais aussi de récupérer de grandes quantités de données sans interruption.

L'une des meilleures options est le site proxys, car il provient d'adresses IP résidentielles réelles, ce qui le rend plus difficile à détecter et à bloquer.

Le site résidentiel proxys de ProxyScrape sont parfaits pour les scénarios de web scraping, en particulier lorsqu'ils ciblent des sites web avec des mesures anti-scraping strictes. Nous proposons des adresses IP tournantes provenant de différents endroits, ce qui garantit que vos demandes semblent provenir d'utilisateurs réels. Cela permet de contourner les restrictions, d'échapper aux interdictions et de garantir un accès continu aux données dont vous avez besoin.

Voyons maintenant comment proxys est intégré à ScrapegraphAI :

from dotenv import load_dotenv
import os
from scrapegraphai.graphs import SmartScraperGraph

# Load the OpenAI API key from .env file
load_dotenv()
openai_key = os.getenv("OPENAI_APIKEY")

# Define the configuration with proxy integration
graph_config = {
   "llm": {
      "api_key": openai_key,
      "model": "openai/gpt-4o-mini",
   },
   "loader_kwargs": {
      "proxy": {
         "server": "rp.proxyscrape.com:6060",
         "username": "your_username",
         "password": "your_password",
      },
   },
}

prompt = """
Extract all the books from this website including
- Book Name
- Price
- Availability 
- Reviews
"""

# Create the SmartScraperGraph instance
smart_scraper_graph = SmartScraperGraph(
   prompt=prompt,
   source="https://books.toscrape.com/",
   config=graph_config
)

# Run the scraper and print the result
if __name__ == '__main__':
   result = smart_scraper_graph.run()
   print(result)

Explication de l'intégration du proxy :

  • Configuration du proxy : Le proxy est configuré sous la rubrique loader_kwargs dans le graph_config. Ici, vous définissez l'adresse de votre serveur proxy, votre nom d'utilisateur et votre mot de passe.
  • Cela garantit que toutes les demandes faites par ScrapegraphAI sont acheminées par le serveur proxy spécifié, ce qui permet de contourner les restrictions ou d'éviter les interdictions d'IP sur le site Web cible.

Conclusion

Dans ce blog, nous avons exploré la puissance de ScrapegraphAI, un outil moderne de scraping web qui utilise de grands modèles de langage (LLM) pour extraire intelligemment des données structurées à partir de sites web. Nous avons passé en revue ses principales fonctionnalités, y compris divers pipelines de scraping tels que le SmartScraperGraph, et fourni un exemple pratique de scraping de données de livres à partir d'un site web en utilisant le modèle GPT-4o-mini d'OpenAI.

Nous avons également montré comment intégrer proxys, en particulier le site résidentielProxyScrape proxys . proxys est essentiel pour rester anonyme, contourner les restrictions et maintenir l'accès aux données, en particulier avec les sites qui utilisent des tactiques anti-scraping telles que les interdictions d'IP ou les limites de taux.

En intégrant ProxyScrape's residential proxys, vous vous assurez que vos activités de web scraping sont plus efficaces, plus sûres et plus évolutives, même sur les sites web les plus difficiles.