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.
In questo blog tratteremo i seguenti argomenti:
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:
ScrapegraphAI offre diverse pipeline di scraping standard per soddisfare le varie esigenze. Alcune delle più comuni includono:
Nella prossima sezione, ci concentreremo su SmartScraperGraph, che consente lo scraping di una singola pagina, semplicemente fornendo un prompt e un URL di origine.
Per seguire la procedura, è necessario installare alcune dipendenze. Per farlo, eseguire il seguente comando:
pip installare scrapegraphai openai python-dotenv
installare playwright
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
Supponiamo di voler estrarre informazioni su tutti i libri presenti su Books to Scrape, tra cui:
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)
GPT-4o-mini
fornendo la chiave API e specificando il nome del modello.eseguire()
avvia il processo di scraping e il risultato viene stampato come un elenco di dizionari, ciascuno contenente i dettagli di un libro.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.
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)
loader_kwargs
nel tasto grafico_configurazione
. Qui si definiscono l'indirizzo del server proxy, il nome utente e la password.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.