«`html
Как создать продвинутый веб-скрейпер BrightData с помощью Google Gemini для извлечения данных на базе ИИ
В современном мире автоматизация процессов становится ключевым фактором успеха бизнеса. Одним из способов достижения этого является использование веб-скрейперов для извлечения данных. В этой статье мы рассмотрим, как создать продвинутый веб-скрейпер, который использует мощную сеть прокси BrightData и API Google Gemini для интеллектуального извлечения данных. Вы узнаете, как структурировать свой проект на Python, установить необходимые библиотеки и реализовать логику скрейпинга в удобном классе BrightDataScraper.
Установка необходимых библиотек
Для начала необходимо установить ключевые библиотеки, которые понадобятся для работы:
- langchain-brightdata — для скрейпинга с помощью BrightData;
- langchain-google-genai и google-generativeai — для интеграции с Google Gemini;
- langgraph — для оркестрации агентов;
- langchain-core — для основного фреймворка LangChain.
Команда для установки:
!pip install langchain-brightdata langchain-google-genai langgraph langchain-core google-generativeai
Импорт необходимых библиотек
После установки библиотек, импортируем их в наш проект:
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
Эти импорты подготовят вашу среду и основную функциональность. Мы используем os и json для работы с системными операциями и сериализацией данных, а typing для структурированных подсказок типов.
Создание класса BrightDataScraper
class BrightDataScraper:
"""Улучшенный веб-скрейпер с использованием API BrightData"""
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])
Класс BrightDataScraper инкапсулирует всю логику веб-скрейпинга BrightData и опциональную интеллектуальную обработку на базе Gemini в одном интерфейсе. Его методы позволяют легко извлекать данные о продуктах Amazon, списках бестселлеров и профилях LinkedIn, обрабатывая API-запросы, ошибки и форматирование JSON.
Методы скрейпинга
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)}
Методы скрейпинга позволяют извлекать данные о продуктах Amazon, бестселлерах и профилях LinkedIn. Каждый метод включает обработку ошибок, что делает вашу систему более надежной.
Запуск запросов AI-агента
def run_agent_query(self, query: str) -> None:
"""Запуск AI-агента с запросом на естественном языке"""
if not hasattr(self, 'agent'):
print("Ошибка: требуется ключ API Google для функциональности агента")
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()
Функция для вывода результатов позволяет удобно просматривать извлеченные данные, что упрощает анализ и принятие решений.
Основная функция выполнения
def main():
"""Основная функция выполнения"""
BRIGHT_DATA_API_KEY = "Используйте свой собственный ключ API"
GOOGLE_API_KEY = "Используйте свой собственный ключ API"
scraper = BrightDataScraper(BRIGHT_DATA_API_KEY, GOOGLE_API_KEY)
print("Скрейпинг бестселлеров Amazon Индия...")
bestsellers = scraper.scrape_amazon_bestsellers("in")
scraper.print_results(bestsellers, "Бестселлеры Amazon Индия")
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
в Нью-Йорке (почтовый индекс 10001) и краткое резюме ключевых деталей продукта.
"""
scraper.run_agent_query(agent_query)
Эта функция связывает все вместе, устанавливая ключи API и демонстрируя каждую функцию вашего скрейпера.
Заключение
В результате этого руководства вы получите готовый к использованию скрипт на Python, который автоматизирует рутинные задачи по сбору данных, абстрагируя низкоуровневые детали API и используя генеративный ИИ для обработки запросов. Вы можете расширить эту основу, добавив поддержку других типов данных или интегрировав дополнительные LLM, что позволит вам собирать, анализировать и представлять веб-данные более эффективно.
Теперь у вас есть все необходимое для создания мощного инструмента для извлечения данных, который может помочь вам в исследовании рынка, конкурентной разведке или разработке индивидуальных приложений на базе ИИ.
«`