ScrapegraphAI: potencializando a Web Scraping com LLMs

Guias, Python, Scraping, 27/09/20245 minutos de leitura

A Web scraping evoluiu da extração simples baseada em regras para técnicas mais avançadas que dependem de grandes modelos de linguagem (LLMs) para extração de dados com reconhecimento de contexto. A ScrapegraphAI está na vanguarda dessa evolução, permitindo a Web scraping por meio de LLMs avançados como OpenAI, Gemini e até mesmo modelos locais como Ollama. Neste blog, vamos nos aprofundar no que é o ScrapegraphAI, como ele funciona e apresentar um exemplo real de dados de scraping de um site com a integração proxy .

O que você aprenderá?

Neste blog, abordaremos o assunto:

  • O que é o ScrapegraphAI e como ele funciona
  • O uso básico do ScrapegraphAI para sites scraping
  • Como integrar o proxies para melhorar o desempenho
  • Um exemplo prático usando o modelo GPT-4o-mini da OpenAI para extrair dados de livros do site Books to Scrape

O que é o ScrapegraphAI e como ele funciona

O ScrapegraphAI é uma estrutura robusta para a Web scraping (código-fonte aberto) que utiliza grandes modelos de linguagem para extrair dinamicamente dados de sites. Diferentemente dos raspadores tradicionais que dependem de seletores CSS rígidos ou XPath, o ScrapegraphAI usa LLMs para interpretar e extrair dados estruturados de uma ampla variedade de fontes, inclusive páginas dinâmicas da Web e arquivos como PDFs. Basta especificar as informações que você deseja e deixar que o ScrapeGraphAI faça o trabalho pesado, oferecendo uma opção mais flexível e de baixa manutenção em comparação com as ferramentas tradicionais do site scraping . Um recurso importante do ScrapegraphAI é sua capacidade de permitir que os usuários definam um esquema para os dados que desejam extrair. Você pode especificar um formato estruturado para sua saída e o ScrapegraphAI ajustará os dados extraídos para que correspondam a esse esquema.

Um dos recursos de destaque do ScrapegraphAI é sua flexibilidade na escolha de LLMs, com suporte para:

  • Modelos de GPT da OpenAI , como GPT-3.5 e GPT-4o-mini
  • Gemini para casos de uso mais específicos
  • Modelos locais que usam a Ollama para soluções econômicas e privadas em scraping

Principais Scraping Pipelines

O ScrapegraphAI oferece vários pipelines scraping padrão para atender a várias necessidades. Alguns dos mais comuns incluem:

  • SmartScraperGraph: Um raspador de página única que só precisa de um prompt de usuário e uma fonte de entrada (site ou arquivo local).
  • SearchGraph: Extrai informações dos n principais resultados de pesquisa de um mecanismo de pesquisa.
  • SpeechGraph: Extrai dados de uma página e gera um arquivo de áudio a partir dos resultados.
  • ScriptCreatorGraph: Extrai uma única página e gera um script Python para extrações futuras.
  • SmartScraperMultiGraph: Extrai dados de várias páginas usando um único prompt e uma lista de URLs.
  • ScriptCreatorMultiGraph: Semelhante ao anterior, mas gera scripts Python para várias páginas scraping.

Na próxima seção, vamos nos concentrar no SmartScraperGraph, que permite uma página única scraping , bastando fornecer um prompt e um URL de origem.

Uso básico do ScrapegraphAI

Pré-requisitos

Para acompanhar o processo, você precisa instalar algumas dependências. Você pode fazer isso executando o seguinte comando:

pip install scrapegraphai openai python-dotenv
playwright install
  • scrapegraphai: Esse é o pacote principal do ScrapegraphAI.
  • openai: Usaremos o modelo GPT-4o-mini da OpenAI para scraping.
  • python-dotenv: isso nos permitirá carregar com segurança variáveis de ambiente, como chaves de API, de um arquivo .env.

Depois de instalá-los, verifique se você tem sua chave de API da OpenAI pronta. Armazene-a em um arquivo .env para manter suas credenciais seguras:

OPENAI_APIKEY=sua_chave_openai_api

Exemplo de código: Scraping Dados de livros para Scrape

Digamos que desejemos extrair informações sobre todos os livros em Books to Scrape, incluindo:

  • Nome do livro
  • Preço
  • Disponibilidade
  • Comentários

Aqui está um exemplo de código usando o pipeline SmartScraperGraph do 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)

Explicação do código:

  • Configuração do LLM: Configuramos o ScrapegraphAI para usar o GPT-4o-mini fornecendo a chave da API e especificando o nome do modelo.
  • Prompt: O prompt definido pelo usuário instrui a IA a extrair informações do site sobre cada livro, incluindo o nome, o preço, a disponibilidade e as resenhas.
  • URL de origem: Fornecemos o URL do site que queremos acessar scrape.
  • Executando o Scraper: O executar() inicia o processo scraping , e o resultado é impresso como uma lista de dicionários, cada um contendo detalhes sobre um livro.

Exemplo de saída

Aqui está um exemplo de como o resultado pode ser:

{'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 você pode ver, o raspador extrai com êxito os detalhes de cada livro em um formato estruturado, pronto para ser usado em seu pipeline de dados.

Proxy Integração

Quando scraping em escala ou direcionado a sites com medidas antiscraping , a integração proxies torna-se essencial para evitar proibições de IP, captchas e limitação de taxa. O uso do proxies não apenas proporciona anonimato, mas também garante que você possa scrape grandes quantidades de dados sem interrupções.

Uma das melhores opções para isso é o proxies residencial, pois eles vêm de endereços IP residenciais reais, o que os torna mais difíceis de detectar e bloquear.

Residencial proxies de ProxyScrape são perfeitos para cenários da Web scraping , especialmente quando se tem como alvo sites com medidas rigorosas contrascraping . Oferecemos endereços IP rotativos de vários locais, garantindo que suas solicitações pareçam vir de usuários reais. Isso ajuda a contornar restrições, evitar proibições e garantir o acesso contínuo aos dados de que você precisa.

Agora vamos ver como o proxies está integrado ao 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)

Explicação de Proxy Integração:

  • Proxy Configuração: O endereço proxy é definido em loader_kwargs na chave graph_config. Aqui, você define o endereço do servidor proxy , o nome de usuário e a senha.
  • Isso garante que todas as solicitações feitas pelo ScrapegraphAI sejam roteadas por meio do servidor proxy especificado, o que ajuda a contornar restrições ou evitar proibições de IP no site de destino.

Conclusão

Neste blog, exploramos o poder do ScrapegraphAI, uma ferramenta moderna da Web scraping que usa modelos de linguagem grandes (LLMs) para extrair dados estruturados de sites de forma inteligente. Apresentamos seus principais recursos, incluindo vários pipelines scraping como o SmartScraperGraph, e fornecemos um exemplo prático de scraping dados de livros de um site usando o modelo GPT-4o-mini da OpenAI.

Além disso, mostramos como integrar proxies, especialmente ProxyScrape's residencial proxies. Proxies são cruciais para permanecer anônimo, contornar restrições e manter o acesso aos dados, especialmente com sites que usam táticas antiscraping como proibições de IP ou limites de taxa.

Ao integrar o ProxyScrape residencial proxies, você garante que suas atividades na Web scraping sejam mais eficientes, seguras e dimensionáveis, mesmo nos sites mais desafiadores.