Как построить расширенную веб-скребок BrightData с Google Gemini для извлечения данных с AI, извлеченным

В этом уроке мы проводим вас по созданию улучшенного инструмента для скребучения веб -сайта, который используется BrightDataМощная прокси -сеть наряду с API Gemini Google для интеллектуального извлечения данных. Вы увидите, как структурировать свой проект Python, установить и импортировать необходимые библиотеки, и инкапсулировать логику соскоба в чистый, многоразовый класс BrightDatascraper. Независимо от того, нацелены ли вы Amazon страниц продуктов, списками бестселлеров или профили LinkedIn, модульные методы Scraper демонстрируют, как настроить параметры скребки, грациозно обрабатывать ошибки и возвращать структурированные результаты JSON. Дополнительная интеграция AI-агента в стиле реагирования также показывает, как объединить основы, управляемые LLM с царапином в режиме реального времени, что позволяет вам создавать запросы естественного языка для анализа данных на лете.

!pip install langchain-brightdata langchain-google-genai langgraph langchain-core google-generativeai

Мы устанавливаем все ключевые библиотеки, необходимые для учебника на один шаг: Langchain-BrightData для BrightData Web Scraping, Langchain-Google-Genai и Google-Generativeai для интеграции Google Gemini, Langgraph для оркестровки агента и Langchain-Core для основной структуры Langchain.

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

Эти импорты готовит вашу среду и основную функциональность: ОС и JSON обрабатывают операции системы и сериализацию данных, в то время как типинг обеспечивает подсказки структурированного типа. Затем вы вводите BrightDataWebScraperapi для скребки BrightData, Chatgooglegenerativeai для взаимодействия с Gemini LLM Google и create_react_agent, чтобы организовать эти компоненты в агенте реагирования.

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()

Класс BrightDatasCraper инкапсулирует всю логику в Интернете BrightData и необязательный интеллект, способный к мощению Близнецов под одним многоразовым интерфейсом. Его методы позволяют вам легко извлечь подробности продукта Amazon, списки бестселлеров и профили LinkedIn, обработку вызовов API, обработку ошибок и форматирование JSON и даже потоковые «агент» на естественном языке, когда предоставляется ключ Google API. Удобный помощник Print_Results гарантирует, что ваш выход всегда форматирован для проверки.

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)

Функция Main () связывает все вместе, устанавливая ваши клавиши BrightData и Google API, создавая яркие сведения, а затем демонстрируя каждую функцию: она царит бестселлеры Amazon India, получает детали для конкретного продукта, извлекает в каждую шаг и, наконец, запускает натуральный агент-агент.

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()

Наконец, этот блок точки входа гарантирует, что при запуске в качестве автономного сценария необходимые библиотеки скребки тихо устанавливаются, а ключ API BrightData устанавливается в среде. Затем выполняется основная функция, чтобы инициировать все рабочие процессы для соскоб и агента.

В заключение, к концу этого урока у вас будет готовый к употреблению сценарий Python, который автоматизирует утомительные задачи сбора данных, реферат в рефератах низкоуровневого API и, необязательно, включает в себя генеративный ИИ для передового обработки запросов. Вы можете продлить эту основу, добавив поддержку других типов наборов данных, интегрируя дополнительные LLMS или развернув скребок как часть более крупного конвейера данных или веб -службы. С этими строительными блоками, вы теперь готовы к сбору, анализу и представлянию веб-данных более эффективно, будь то для исследования рынка, конкурентной разведки или пользовательских приложений, управляемых AI.


Проверьте БлокнотПолем Весь кредит на это исследование направлено на исследователей этого проекта. Кроме того, не стесняйтесь следить за нами Twitter И не забудьте присоединиться к нашему 100K+ ML Subreddit и подписаться на Наша информационный бюллетеньПолем


ASIF Razzaq является генеральным директором Marktechpost Media Inc. как дальновидного предпринимателя и инженера, ASIF стремится использовать потенциал искусственного интеллекта для социального блага. Его последнее усилие-запуск медиа-платформы искусственного интеллекта, Marktechpost, которая выделяется благодаря глубокому освещению машинного обучения и новостей о глубоком обучении, которое является технически обоснованным и легко понятным для широкой аудитории. Платформа может похвастаться более чем 2 миллионами ежемесячных просмотров, иллюстрируя свою популярность среди зрителей.

Source link

Scroll to Top