En este tutorial, lo acompañamos a través de la creación de una herramienta mejorada de raspado web que aprovecha Data BrightLa poderosa red proxy junto con la API Gemini de Google para la extracción de datos inteligentes. Verá cómo estructurar su proyecto de Python, instalar e importar las bibliotecas necesarias, y encapsular la lógica de raspado dentro de una clase limpia y reutilizable BrightDataScraper. Ya sea que esté dirigido a las páginas de productos de Amazon, listados de ventajas o perfiles de LinkedIn, los métodos modulares del raspador demuestran cómo configurar los parámetros de raspado, manejar errores con gracia y devolver los resultados de JSON estructurados. Una integración opcional de agente de IA de estilo React también le muestra cómo combinar el razonamiento impulsado por LLM con raspado en tiempo real, lo que le permite plantear consultas de lenguaje natural para el análisis de datos sobre la marcha.
!pip install langchain-brightdata langchain-google-genai langgraph langchain-core google-generativeai
Instalamos todas las bibliotecas clave necesarias para el tutorial en un solo paso: Langchain-BrightData para el raspado web BrightData, Langchain-Google-Genai y Google-Generativeai para la integración de Google Gemini, Langgraph para la orquestación de agentes y el núcleo de Langchain para el marco Langchain central.
import os
import json
from typing import Dict, Any, Optional
from langchain_brightdata import BrightDataWebScraperAPI
from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.prebuilt import create_react_agent
Estas importaciones preparan su entorno y funcionalidad central: OS y JSON manejan las operaciones del sistema y la serialización de datos, mientras que la escritura proporciona sugerencias de tipo estructurado. Luego trae BrightDataWebScraperapi para el raspado BrightData, chatGoogleGenerativeai para interactuar con Gemini LLM de Google y crear_react_agent para orquestar estos componentes en un agente de estilo React.
class BrightDataScraper:
"""Enhanced web scraper using BrightData API"""
def __init__(self, api_key: str, google_api_key: Optional[str] = None):
"""Initialize scraper with API keys"""
self.api_key = api_key
self.scraper = BrightDataWebScraperAPI(bright_data_api_key=api_key)
if google_api_key:
self.llm = ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
google_api_key=google_api_key
)
self.agent = create_react_agent(self.llm, [self.scraper])
def scrape_amazon_product(self, url: str, zipcode: str = "10001") -> Dict[str, Any]:
"""Scrape Amazon product data"""
try:
results = self.scraper.invoke({
"url": url,
"dataset_type": "amazon_product",
"zipcode": zipcode
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def scrape_amazon_bestsellers(self, region: str = "in") -> Dict[str, Any]:
"""Scrape Amazon bestsellers"""
try:
url = f"https://www.amazon.{region}/gp/bestsellers/"
results = self.scraper.invoke({
"url": url,
"dataset_type": "amazon_product"
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def scrape_linkedin_profile(self, url: str) -> Dict[str, Any]:
"""Scrape LinkedIn profile data"""
try:
results = self.scraper.invoke({
"url": url,
"dataset_type": "linkedin_person_profile"
})
return {"success": True, "data": results}
except Exception as e:
return {"success": False, "error": str(e)}
def run_agent_query(self, query: str) -> None:
"""Run AI agent with natural language query"""
if not hasattr(self, 'agent'):
print("Error: Google API key required for agent functionality")
return
try:
for step in self.agent.stream(
{"messages": query},
stream_mode="values"
):
step["messages"][-1].pretty_print()
except Exception as e:
print(f"Agent error: {e}")
def print_results(self, results: Dict[str, Any], title: str = "Results") -> None:
"""Pretty print results"""
print(f"\n{'='*50}")
print(f"{title}")
print(f"{'='*50}")
if results["success"]:
print(json.dumps(results["data"], indent=2, ensure_ascii=False))
else:
print(f"Error: {results['error']}")
print()
La clase BrightDataScraper encapsula todas las lógicas de choque web de BrightData e inteligencia opcional con Géminis bajo una sola interfaz reutilizable. Sus métodos le permiten obtener fácilmente los detalles del producto de Amazon, las listas de bestseller y los perfiles de LinkedIn, el manejo de llamadas de API, el manejo de errores y el formato JSON, e incluso transmitir consultas de “agente” de lenguaje natural cuando se proporciona una tecla API de Google. Un conveniente ayudante print_results asegura que su salida siempre esté formateada limpia para la inspección.
def main():
"""Main execution function"""
BRIGHT_DATA_API_KEY = "Use Your Own API Key"
GOOGLE_API_KEY = "Use Your Own API Key"
scraper = BrightDataScraper(BRIGHT_DATA_API_KEY, GOOGLE_API_KEY)
print("🛍️ Scraping Amazon India Bestsellers...")
bestsellers = scraper.scrape_amazon_bestsellers("in")
scraper.print_results(bestsellers, "Amazon India Bestsellers")
print("📦 Scraping Amazon Product...")
product_url = "https://www.amazon.com/dp/B08L5TNJHG"
product_data = scraper.scrape_amazon_product(product_url, "10001")
scraper.print_results(product_data, "Amazon Product Data")
print("👤 Scraping LinkedIn Profile...")
linkedin_url = "https://www.linkedin.com/in/satyanadella/"
linkedin_data = scraper.scrape_linkedin_profile(linkedin_url)
scraper.print_results(linkedin_data, "LinkedIn Profile Data")
print("🤖 Running AI Agent Query...")
agent_query = """
Scrape Amazon product data for https://www.amazon.com/dp/B0D2Q9397Y?th=1
in New York (zipcode 10001) and summarize the key product details.
"""
scraper.run_agent_query(agent_query)
La función Main () une todo junto con sus teclas de API BrightData y Google, instanciando el BrightDataScraper, y luego demostrando cada característica: raspa los bestsellers de Amazon India, obtiene detalles para un producto específico, recupera un perfil de LinkedIn y finalmente ejecuta una consulta de agentes de lengua natural, imprimiendo resultados bien formatados después de cada paso.
if __name__ == "__main__":
print("Installing required packages...")
os.system("pip install -q langchain-brightdata langchain-google-genai langgraph")
os.environ["BRIGHT_DATA_API_KEY"] = "Use Your Own API Key"
main()
Finalmente, este bloque de punto de entrada asegura que, cuando se ejecute como un script independiente, las bibliotecas de raspado requeridas se instalen silenciosamente, y la tecla API BrightData se establece en el entorno. Luego, la función principal se ejecuta para iniciar todos los flujos de trabajo de desguace y agente.
En conclusión, al final de este tutorial, tendrá un script de Python listo para usar que automatiza tareas de recopilación de datos tediosos, resume los detalles de la API de bajo nivel y opcionalmente aprovecha la IA generativa para el manejo de consultas avanzadas. Puede extender esta base agregando soporte para otros tipos de conjuntos de datos, integrando LLM adicionales o implementando el raspador como parte de una cartera de datos o servicio web más grande. Con estos bloques de construcción, ahora está equipado para recopilar, analizar y presentar datos web de manera más eficiente, ya sea para la investigación de mercado, la inteligencia competitiva o las aplicaciones personalizadas impulsadas por la IA.
Mira el Computadora portátil. Todo el crédito por esta investigación va a los investigadores de este proyecto. Además, siéntete libre de seguirnos Gorjeo Y no olvides unirte a nuestro Subreddit de 100k+ ml y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.