A raspagem da Web evoluiu de uma simples extração baseada em regras para técnicas mais avançadas que dependem de modelos de linguagem de grande dimensão (LLM) para a extração de dados sensíveis ao contexto. O ScrapegraphAI está na vanguarda dessa evolução, permitindo a raspagem da Web por meio de LLMs poderosos como OpenAI, Gemini e até mesmo modelos locais como Ollama. Neste blogue, vamos analisar o que é o ScrapegraphAI, como funciona e apresentar um exemplo real de raspagem de dados de um Web site com integração de proxy.
Neste blogue, abordaremos:
O ScrapegraphAI é uma estrutura robusta de raspagem da Web (código aberto) que utiliza grandes modelos de linguagem para extrair dinamicamente dados de sítios Web. Ao contrário dos raspadores tradicionais que dependem de seletores CSS rígidos ou XPath, o ScrapegraphAI utiliza LLMs para interpretar e extrair dados estruturados de uma vasta gama de fontes, incluindo páginas Web dinâmicas e ficheiros como PDFs. Basta especificar as informações que pretende e deixar que o ScrapeGraphAI faça o trabalho pesado, proporcionando uma opção mais flexível e de baixa manutenção em comparação com as ferramentas de raspagem tradicionais. Uma das principais caraterísticas do ScrapegraphAI é a sua capacidade de permitir que os utilizadores definam um esquema para os dados que pretendem extrair. Pode especificar um formato estruturado para a sua saída, e o ScrapegraphAI ajustará os dados extraídos para corresponderem a esse esquema.
Uma das caraterísticas de destaque do ScrapegraphAI é a sua flexibilidade na escolha de LLMs, com suporte para:
O ScrapegraphAI oferece vários pipelines de raspagem padrão para atender a várias necessidades. Alguns dos mais comuns incluem:
Na próxima secção, vamos centrar-nos no SmartScraperGraph, que permite a recolha de dados de uma única página, bastando para isso fornecer um prompt e um URL de origem.
Para seguir em frente, precisa de instalar algumas dependências. Pode fazer isso executando o seguinte comando:
pip install scrapegraphai openai python-dotenv
playwright install
Depois de os instalar, certifique-se de que tem a sua chave de API OpenAI pronta. Armazene-a em um arquivo .env para manter suas credenciais seguras:
OPENAI_APIKEY=a sua chave_openai_api
Imaginemos que queremos extrair informações sobre todos os livros em Books to Scrape, incluindo:
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)
GPT-4o-mini
fornecendo a chave da API e especificando o nome do modelo.executar()
inicia o processo de raspagem e o resultado é impresso como uma lista de dicionários, cada um contendo detalhes sobre um livro.Aqui está um exemplo do que o resultado pode parecer:
{'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 pode ver, o raspador extrai com êxito os detalhes de cada livro num formato estruturado, pronto a ser utilizado no seu pipeline de dados.
Ao fazer scraping em escala ou ao visar sites com medidas anti- scraping, a integração de proxies torna-se essencial para evitar proibições de IP, captchas e limitação de taxa. A utilização de proxies não só proporciona anonimato, como também garante que pode recolher grandes quantidades de dados sem interrupções.
Uma das melhores opções para isso são os proxies residenciais, uma vez que provêm de endereços IP residenciais reais, o que os torna mais difíceis de detetar e bloquear.
Os proxies residenciais da ProxyScrape são perfeitos para cenários de web scraping, especialmente quando se tem como alvo sítios web com medidas anti- scraping rigorosas. Oferecemos endereços IP rotativos de várias localizações, garantindo que os seus pedidos aparecem como se fossem provenientes de utilizadores reais. Isto ajuda a contornar restrições, evitar proibições e garantir o acesso contínuo aos dados de que necessita.
Vejamos agora como os proxies são integrados no 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)
loader_kwargs
na tecla graph_config
. Aqui, define o endereço do servidor proxy, o nome de utilizador e a palavra-passe.Neste blogue, explorámos o poder do ScrapegraphAI, uma ferramenta moderna de recolha de dados da Web que utiliza modelos de linguagem de grande dimensão (LLM) para extrair dados estruturados de sítios Web de forma inteligente. Percorremos as suas principais funcionalidades, incluindo vários pipelines de recolha de dados, como o SmartScraperGraph, e fornecemos um exemplo prático de recolha de dados de livros de um sítio Web utilizando o modelo GPT-4o-mini da OpenAI.
Além disso, mostrámos como integrar proxies, especialmente os proxies residenciais doProxyScrape. Os proxies são cruciais para manter o anonimato, contornar restrições e manter o acesso aos dados, especialmente com sites que utilizam tácticas anti-raspagem como proibições de IP ou limites de taxa.
Ao integrar os proxies residenciais doProxyScrape, garante que as suas actividades de recolha de dados da Web são mais eficientes, seguras e escaláveis, mesmo nos sítios Web mais difíceis.