from bs4 import BeautifulSoup
# usa a variavel da celula acima que simula uma pagina html carregade de webscrap
soup_tripadvisor = BeautifulSoup(html_do_tripadvisor, 'html.parser')
print("\nIniciando a extração detalhada dos restaurantes da página do Tripadvisor...")
restaurantes_detalhados = []
restaurant_blocks = soup_tripadvisor.find_all('div', class_=lambda c: c and 'tbrcR' in c)
if not restaurant_blocks:
print("AVISO: Nenhum bloco de restaurante principal encontrado com os seletores configurados ('tbrcR').")
print("Por favor, **REVISE A INSPEÇÃO MANUAL** se o layout da página mudou e atualize este seletor.")
top_n_restaurants = restaurant_blocks[:5]
for block in top_n_restaurants:
nome_link_tag = block.find('a', class_=lambda c: c and 'BMQDV' in c and 'ukgoS' in c)
nome = "Nome não encontrado"
if nome_link_tag:
nome_div_tag = nome_link_tag.find('div', class_=lambda c: c and 'biGQs' in c and 'fiohW' in c)
if nome_div_tag:
nome = nome_div_tag.get_text(strip=True)
reviews_tag = block.find('div', {'data-automation': 'bubbleReviewCount'})
reviews = reviews_tag.find('span').get_text(strip=True) if reviews_tag and reviews_tag.find('span') else "Reviews não encontrados"
rating_tag = block.find('div', {'data-automation': 'bubbleRatingValue'})
rating = rating_tag.find('span').get_text(strip=True) if rating_tag and rating_tag.find('span') else "Avaliação não encontrada"
culinaria_preco_div = block.find('div', class_=lambda c: c and 'ZvrsW' in c and 'biqBm' in c)
tipo_culinaria = "Tipo de Culinária não encontrado"
preco = "Preço não encontrado"
if culinaria_preco_div:
spans_info = culinaria_preco_div.find_all('span', class_=lambda c: c and 'biGQs' in c and 'pZUbB' in c and 'ZNjnF' in c)
if len(spans_info) >= 1:
tipo_culinaria = spans_info[0].get_text(strip=True)
for i in range(1, len(spans_info)):
text = spans_info[i].get_text(strip=True)
if '$' in text:
preco = text
break
localizacao = "Localização não especificada (do nome)"
if ' - ' in nome:
partes_nome = nome.split(' - ')
if len(partes_nome) > 1:
localizacao = partes_nome[-1].strip()
link = "Link não encontrado"
if nome_link_tag and 'href' in nome_link_tag.attrs:
link = "https://www.tripadvisor.com.br" + nome_link_tag['href']
restaurantes_detalhados.append({
"Nome": nome,
"Avaliação": rating,
"Reviews": reviews,
"Preço": preco,
"Tipo Culinária": tipo_culinaria,
"Localização": localizacao,
"Link": link
})
if restaurantes_detalhados:
print(f"\n--- {len(restaurantes_detalhados)} Restaurantes Extraídos do Tripadvisor ---")
for i, r in enumerate(restaurantes_detalhados):
print(f"Restaurante #{i+1}:")
print(f" Nome: {r['Nome']}")
print(f" Avaliação: {r['Avaliação']}")
print(f" Reviews: {r['Reviews']}")
print(f" Preço: {r['Preço']}")
print(f" Tipo Culinária: {r['Tipo Culinária']}")
print(f" Localização: {r['Localização']}")
print(f" Link: {r['Link']}")
print("-" * 40)
else:
print("Nenhum detalhe de restaurante foi extraído. **Verifique os seletores HTML no Bloco 4**.")
print("-" * 50)