El scraping web ha evolucionado desde la simple extracción basada en reglas a técnicas más avanzadas que se basan en grandes modelos de lenguaje (LLM) para la extracción de datos conscientes del contexto. ScrapegraphAI está a la vanguardia de esta evolución, permitiendo el scraping web a través de potentes LLMs como OpenAI, Gemini, e incluso modelos locales como Ollama. En este blog, vamos a profundizar en lo que es ScrapegraphAI, cómo funciona, y caminar a través de un ejemplo del mundo real de los datos de raspado de un sitio web con la integración de proxy.
En este blog trataremos:
ScrapegraphAI es un robusto marco de raspado web (de código abierto) que aprovecha grandes modelos de lenguaje para extraer dinámicamente datos de sitios web. A diferencia de los scrapers tradicionales que se basan en rígidos selectores CSS o XPath, ScrapegraphAI utiliza LLMs para interpretar y extraer datos estructurados de una amplia gama de fuentes, incluyendo páginas web dinámicas y archivos como PDFs. Simplemente especifique la información que busca y deje que ScrapeGraphAI haga el trabajo pesado, proporcionando una opción más flexible y de bajo mantenimiento en comparación con las herramientas tradicionales de scraping. Una característica clave de ScrapegraphAI es su capacidad para permitir a los usuarios definir un esquema para los datos que desean extraer. El usuario puede especificar un formato estructurado para su salida, y ScrapegraphAI ajustará los datos extraídos para que coincidan con este esquema.
Una de las características más destacadas de ScrapegraphAI es su flexibilidad a la hora de elegir LLMs, con soporte para:
ScrapegraphAI ofrece varios pipelines de scraping estándar para adaptarse a diversas necesidades. Algunas de las más comunes son:
En la siguiente sección, nos centraremos en SmartScraperGraph, que permite el scraping de una sola página simplemente proporcionando un prompt y una URL de origen.
Para seguir adelante, es necesario instalar algunas dependencias. Puede hacerlo ejecutando el siguiente comando:
pip install scrapegraphai openai python-dotenv
playwright install
Una vez que los hayas instalado, asegúrate de tener lista tu clave de API de OpenAI. Guárdala en un archivo .env para mantener tus credenciales seguras:
OPENAI_APIKEY=su_clave_openai_api_key
Digamos que queremos extraer información sobre todos los libros en Books to Scrape, incluyendo:
He aquí un ejemplo de código que utiliza el canal 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)
GPT-4o-mini
proporcionando la clave API y especificando el nombre del modelo.ejecutar()
inicia el proceso de scraping, y el resultado se imprime como una lista de diccionarios, cada uno de los cuales contiene detalles sobre un libro.He aquí un ejemplo de cómo podría ser la salida:
{'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 ...
Como puede ver, el scraper extrae con éxito los detalles de cada libro en un formato estructurado, listo para su uso en su canalización de datos.
Al hacer scraping a gran escala o dirigirse a sitios web con medidas anti-scraping, la integración de proxies resulta esencial para evitar prohibiciones de IP, captchas y limitaciones de velocidad. El uso de proxies no solo proporciona anonimato, sino que también garantiza que se puedan escrapear grandes cantidades de datos sin interrupciones.
Una de las mejores opciones para ello son los proxies residenciales, ya que proceden de direcciones IP residenciales reales, lo que los hace más difíciles de detectar y bloquear.
Los proxies residenciales de ProxyScrape son perfectos para escenarios de web scraping, especialmente cuando se dirigen a sitios web con estrictas medidas anti-scraping. Ofrecemos direcciones IP rotativas desde varias ubicaciones, lo que garantiza que sus solicitudes parezcan proceder de usuarios reales. Esto ayuda a eludir restricciones, evadir prohibiciones y garantizar un acceso continuo a los datos que necesita.
Veamos ahora cómo se integran los proxies 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
en la tecla graph_config
. Aquí se define la dirección del servidor proxy, el nombre de usuario y la contraseña.En este blog, exploramos la potencia de ScrapegraphAI, una moderna herramienta de raspado web que utiliza grandes modelos de lenguaje (LLM) para extraer datos estructurados de sitios web de forma inteligente. Recorrimos sus características clave, incluyendo varios pipelines de scraping como el SmartScraperGraph, y proporcionamos un ejemplo práctico de scraping de datos de libros de un sitio web utilizando el modelo GPT-4o-mini de OpenAI.
También mostramos cómo integrar proxies, especialmente los proxies residenciales deProxyScrape. Los proxies son cruciales para permanecer en el anonimato, eludir las restricciones y mantener el acceso a los datos, especialmente con sitios que utilizan tácticas anti-scraping como prohibiciones de IP o límites de velocidad.
Al integrar los proxies residenciales deProxyScrape, se asegura de que sus actividades de web scraping sean más eficientes, seguras y escalables, incluso en los sitios web más difíciles.