ScrapegraphAI: alimentazione dello scraping del web con gli LLM

Guide, Pitone, Scraping, 27 settembre 20245 minuti di lettura

Il web scraping si è evoluto dalla semplice estrazione basata su regole a tecniche più avanzate che si basano su modelli linguistici di grandi dimensioni (LLM) per l'estrazione di dati consapevoli del contesto. ScrapegraphAI è all'avanguardia in questa evoluzione, consentendo lo scraping del web attraverso potenti LLM come OpenAI, Gemini e persino modelli locali come Ollama. In questo blog spiegheremo cos'è ScrapegraphAI, come funziona e illustreremo un esempio reale di scraping di dati da un sito web con l'integrazione di un proxy.

Cosa imparerete?

In questo blog tratteremo i seguenti argomenti:

  • Cos'è e come funziona ScrapegraphAI
  • L'uso di base di ScrapegraphAI per lo scraping di siti web
  • Come integrare i proxy per migliorare le prestazioni
  • Un esempio pratico che utilizza il modello GPT-4o-mini di OpenAI per estrarre i dati dei libri dal sito web Books to Scrape.

Cos'è e come funziona ScrapegraphAI

ScrapegraphAI è un robusto framework di scraping web (open source) che sfrutta modelli linguistici di grandi dimensioni per estrarre dinamicamente i dati dai siti web. A differenza degli scrapers tradizionali che si basano su rigidi selettori CSS o XPath, ScrapegraphAI utilizza gli LLM per interpretare ed estrarre dati strutturati da un'ampia gamma di fonti, tra cui pagine web dinamiche e file come i PDF. È sufficiente specificare le informazioni desiderate e lasciare che ScrapegraphAI faccia il lavoro pesante, offrendo un'opzione più flessibile e a bassa manutenzione rispetto agli strumenti di scraping tradizionali. Una caratteristica fondamentale di ScrapegraphAI è la capacità di consentire agli utenti di definire uno schema per i dati che desiderano estrarre. È possibile specificare un formato strutturato per l'output e ScrapegraphAI regolerà i dati estratti in modo che corrispondano a questo schema.

Una delle caratteristiche principali di ScrapegraphAI è la sua flessibilità nella scelta degli LLM, con il supporto per:

  • Modelli GPT di OpenAI come GPT-3.5 e GPT-4o-mini
  • Gemini per casi d'uso più specifici
  • Modelli locali che utilizzano Ollama per soluzioni di scraping private ed economiche

Linee guida chiave per lo scraping

ScrapegraphAI offre diverse pipeline di scraping standard per soddisfare le varie esigenze. Alcune delle più comuni includono:

  • SmartScraperGraph: Uno scraper a pagina singola che necessita solo di una richiesta dell'utente e di una fonte di input (sito web o file locale).
  • SearchGraph: Estrae informazioni dai primi n risultati di ricerca di un motore di ricerca.
  • SpeechGraph: Raccoglie dati da una pagina e genera un file audio dai risultati.
  • ScriptCreatorGraph: Esegue lo scraping di una singola pagina e genera uno script Python per estrazioni future.
  • SmartScraperMultiGraph: Scrapes di dati da più pagine utilizzando un singolo prompt e un elenco di URL.
  • ScriptCreatorMultiGraph: Simile al precedente, ma genera script Python per lo scraping di più pagine.

Nella prossima sezione, ci concentreremo su SmartScraperGraph, che consente lo scraping di una singola pagina, semplicemente fornendo un prompt e un URL di origine.

Utilizzo di base di ScrapegraphAI

Prerequisiti

Per seguire la procedura, è necessario installare alcune dipendenze. Per farlo, eseguire il seguente comando:

pip installare scrapegraphai openai python-dotenv
 installare playwright
  • scrapegraphai: È il pacchetto principale di ScrapegraphAI.
  • openai: Utilizzeremo il modello GPT-4o-mini di OpenAI per lo scraping.
  • python-dotenv: ci consentirà di caricare in modo sicuro variabili d'ambiente come le chiavi API da un file .env.

Una volta installati, assicuratevi di avere pronta la vostra chiave API OpenAI. Memorizzatela in un file .env per mantenere le vostre credenziali al sicuro:

OPENAI_APIKEY=la propria_chiave_openai_api

Esempio di codice: Scraping di dati da Libri da raschiare

Supponiamo di voler estrarre informazioni su tutti i libri presenti su Books to Scrape, tra cui:

  • Nome del libro
  • Prezzo
  • Disponibilità
  • Recensioni

Ecco un esempio di codice che utilizza la pipeline SmartScraperGraph di 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)

Spiegazione del Codice:

  • Configurazione LLM: Configuriamo ScrapegraphAI per utilizzare il sistema OpenAI. GPT-4o-mini fornendo la chiave API e specificando il nome del modello.
  • Prompt: Il prompt definito dall'utente indica all'IA di estrarre dal sito web le informazioni su ciascun libro, tra cui il nome, il prezzo, la disponibilità e le recensioni.
  • URL di origine: Forniamo l'URL del sito web che vogliamo scrappare.
  • Esecuzione del raschietto: Il eseguire() avvia il processo di scraping e il risultato viene stampato come un elenco di dizionari, ciascuno contenente i dettagli di un libro.

Esempio di uscita

Ecco un esempio di come potrebbe apparire l'output:

{'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 ...

Come si può vedere, lo scraper estrae con successo i dettagli di ogni libro in un formato strutturato, pronto per essere utilizzato nella pipeline di dati.

Integrazione proxy

Quando si fa scraping su scala o si punta a siti web con misure anti-scraping, l'integrazione di proxy diventa essenziale per evitare divieti IP, captchas e limitazioni di velocità. L'uso dei proxy non solo garantisce l'anonimato, ma assicura anche la possibilità di eseguire lo scraping di grandi quantità di dati senza interruzioni.

Una delle migliori opzioni è rappresentata dai proxy residenziali, in quanto provengono da indirizzi IP residenziali reali, il che li rende più difficili da individuare e bloccare.

I proxy residenziali di ProxyScrape sono perfetti per gli scenari di web scraping, soprattutto quando si tratta di siti web con severe misure anti-scraping. Offriamo indirizzi IP a rotazione da varie località, assicurando che le vostre richieste appaiano come se provenissero da utenti reali. Questo aiuta a bypassare le restrizioni, a eludere i divieti e a garantire un accesso continuo ai dati di cui avete bisogno.

Vediamo ora come si integrano i proxy con 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)

Spiegazione dell'integrazione proxy:

  • Configurazione del proxy: Il proxy è impostato sotto la voce loader_kwargs nel tasto grafico_configurazione. Qui si definiscono l'indirizzo del server proxy, il nome utente e la password.
  • Questo assicura che tutte le richieste effettuate da ScrapegraphAI siano instradate attraverso il server proxy specificato, il che aiuta a bypassare le restrizioni o a evitare i divieti IP sul sito web di destinazione.

Conclusione

In questo blog abbiamo esplorato la potenza di ScrapegraphAI, un moderno strumento di scraping web che utilizza modelli linguistici di grandi dimensioni (LLM) per estrarre dati strutturati dai siti web in modo intelligente. Abbiamo illustrato le sue caratteristiche principali, tra cui varie pipeline di scraping come SmartScraperGraph, e abbiamo fornito un esempio pratico di scraping di dati di libri da un sito web utilizzando il modello GPT-4o-mini di OpenAI.

Inoltre, abbiamo mostrato come integrare i proxy, in particolare quelli residenziali diProxyScrape. I proxy sono fondamentali per mantenere l'anonimato, aggirare le restrizioni e mantenere l'accesso ai dati, soprattutto con i siti che utilizzano tattiche anti-scraping come i divieti IP o i limiti di velocità.

Integrando i proxy residenziali diProxyScrape, vi assicurate che le vostre attività di scraping del Web siano più efficienti, sicure e scalabili, anche sui siti Web più difficili.