conceitos:
A busca regular é baseada apenas em palavras-chave e retorna uma lista de links como resultado.
Não há análise aprofundada nem tomada de decisão automática.
O usuário precisa avaliar os resultados manualmente.
Uso ideal: pesquisas simples e diretas.
A busca agência envolve um agente inteligente que: Informações de pesquisa, Analisa os resultados, Selecionada a fonte mais relevante, Pode acessar automaticamente o site, Extrai dados específicos
Ela combina busca + esclarecimento + decisão automática.
Instalação dos Pacotes:
pip install tavily-python duckduckgo-search selenium beautifulsoup4 python-dotenv
Instalação dos Pacotes
Configuração das Variáveis
TAVILY_API_KEY=SUA_CHAVE_AQUI
Carregando nenhum código:
import os
from dotenv import load_dotenv
load_dotenv()
TAVILY_API_KEY = os.getenv("TAVILY_API_KEY")
Busca Regular com DuckDuckGo
from duckduckgo_search import DDGS
def busca_regular_restaurantes(cidade):
links = []
with DDGS() as ddgs:
resultados = ddgs.text(f"melhores restaurantes em {cidade}", max_results=5)
for r in resultados:
links.append(r["href"])
return links
links = busca_regular_restaurantes("São Paulo")
print("Links encontrados:")
for link in links:
print(link)
Retorna apenas URLs
Não há filtragem inteligente
Busca Agência com Tavily
from tavily import TavilyClient
tavily = TavilyClient(api_key=TAVILY_API_KEY)
def busca_agentica_tripadvisor(cidade):
resposta = tavily.search(
query=f"melhores restaurantes em {cidade} TripAdvisor",
search_depth="advanced",
max_results=5
)
for resultado in resposta["results"]:
if "tripadvisor" in resultado["url"].lower():
return resultado["url"]
return None
url_tripadvisor = busca_agentica_tripadvisor("São Paulo")
print("URL escolhida:", url_tripadvisor)
6️Web Scraping com Selenium + BeautifulSoup
Necessário ter ChromeDriver compatível instalado.
Inicializando o Selenium
6️ Web Scraping com Selenium + BeautifulSoup
⚠Necessário ter ChromeDriver compatível instalado.
Inicializando o Selenium
from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup import time def extrair_dados_restaurantes ( url ): options = Options ( ) options.add_argument ( " -- headless " ) driver = webdriver.Chrome ( options = options ) driver.get ( url ) time.sleep ( 5 ) soup = BeautifulSoup ( driver.page_source , "html.parser" ) restaurantes = [ ] # OBS: classes devem ser ajustadas conforme estrutura real do site cards = soup.find_all ( "div" , class _ = " restaurant - card" ) for card in cards : nome = card.find ( "span" , class_ = " name" ) avaliacao = card.find ( "span" , class_ = " rating " ) tipo = card . find( "span" , class_ = "categoria" ) preco = card . find( "span" , class_ = "preço" ) restaurantes . append({ "nome" : nome . text . strip() if nome else "N/A" , "avaliacao" : avaliação . text . strip() if avaliação else "N/A" , "tipo" : tipo . text .strip() se tipo senão "N/A" , "preco" :
Executando o Pipeline Completo
cidade = "São Paulo"
Busca regular
print("Busca regular:")
print(busca_regular_restaurantes(cidade))
Busca agêntica
url = busca_agentica_tripadvisor(cidade)
print("URL selecionada:", url)
Scraping
if url:
dados = extrair_dados_restaurantes(url)
print("Dados extraídos:")
for r in dados:
print(r)