Мастерство AI-скрапинга: интеграция BrightData и Google Gemini
Узнайте, как создать продвинутый веб-скраппер, объединяющий прокси BrightData и AI Google Gemini для эффективного сбора и анализа данных.
Создание мощного веб-скраппера с BrightData и Google Gemini
В этом руководстве показано, как создать продвинутый инструмент для веб-скрапинга, объединяющий обширную прокси-сеть BrightData с API Google Gemini для интеллектуального извлечения данных. Проект реализован на Python с использованием необходимых библиотек и аккуратного, переиспользуемого класса BrightDataScraper.
Настройка окружения
Установите все необходимые библиотеки одной командой:
!pip install langchain-brightdata langchain-google-genai langgraph langchain-core google-generativeaiИмпортируйте нужные модули для работы с системой, сериализации данных и интеграции BrightData и Google Gemini:
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Класс BrightDataScraper
Этот класс инкапсулирует всю логику веб-скрапинга и опционального AI.
class BrightDataScraper:
"""Расширенный веб-скраппер с использованием BrightData API"""
def __init__(self, api_key: str, google_api_key: Optional[str] = None):
"""Инициализация с API-ключами"""
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]:
"""Скрапинг данных продукта Amazon"""
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]:
"""Скрапинг бестселлеров Amazon"""
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]:
"""Скрапинг профиля LinkedIn"""
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:
"""Запуск AI-агента с запросом на естественном языке"""
if not hasattr(self, 'agent'):
print("Ошибка: для работы агента требуется ключ Google API")
return
try:
for step in self.agent.stream(
{"messages": query},
stream_mode="values"
):
step["messages"][-1].pretty_print()
except Exception as e:
print(f"Ошибка агента: {e}")
def print_results(self, results: Dict[str, Any], title: str = "Результаты") -> None:
"""Красивый вывод результатов"""
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"Ошибка: {results['error']}")
print()Класс позволяет удобно получать данные продуктов Amazon, списки бестселлеров, профили LinkedIn и выполнять запросы с использованием модели Gemini, с обработкой ошибок и форматированием JSON.
Основной поток выполнения
Функция main демонстрирует использование всех возможностей:
def main():
"""Основная функция выполнения"""
BRIGHT_DATA_API_KEY = "Используйте свой API ключ"
GOOGLE_API_KEY = "Используйте свой API ключ"
scraper = BrightDataScraper(BRIGHT_DATA_API_KEY, GOOGLE_API_KEY)
print(" Скрапинг бестселлеров Amazon India...")
bestsellers = scraper.scrape_amazon_bestsellers("in")
scraper.print_results(bestsellers, "Бестселлеры Amazon India")
print(" Скрапинг продукта Amazon...")
product_url = "https://www.amazon.com/dp/B08L5TNJHG"
product_data = scraper.scrape_amazon_product(product_url, "10001")
scraper.print_results(product_data, "Данные продукта Amazon")
print(" Скрапинг профиля LinkedIn...")
linkedin_url = "https://www.linkedin.com/in/satyanadella/"
linkedin_data = scraper.scrape_linkedin_profile(linkedin_url)
scraper.print_results(linkedin_data, "Данные профиля LinkedIn")
print(" Запуск AI-агента с запросом...")
agent_query = """
Скрапинг данных продукта Amazon по ссылке https://www.amazon.com/dp/B0D2Q9397Y?th=1
в Нью-Йорке (zipcode 10001) с кратким резюме ключевых деталей.
"""
scraper.run_agent_query(agent_query)Запуск скрипта
При запуске устанавливаются необходимые пакеты и задаются переменные окружения:
if __name__ == "__main__":
print("Установка необходимых пакетов...")
os.system("pip install -q langchain-brightdata langchain-google-genai langgraph")
os.environ["BRIGHT_DATA_API_KEY"] = "Используйте свой API ключ"
main()Так обеспечивается установка зависимостей и конфигурация API ключей.
Расширение функционала
Эту основу можно дополнить поддержкой других типов данных, интегрировать дополнительные языковые модели или использовать скраппер в составе более крупного конвейера или сервиса. Благодаря AI и модульной архитектуре, сбор и анализ данных становится более эффективным и гибким.
Switch Language
Read this article in English