Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] [Projeto] [Projeto] Faça como eu fiz: Busca agêntica e scraping parte 2

def scrape_restaurantes_info(url):
    if not url:
        print("Erro: URL vazia ou não localizada para raspagem.")
        return None

    try:
        service = Service(ChromeDriverManager().install())
        options = webdriver.ChromeOptions()
        options.add_argument("--headless")
        options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36")
        
        driver = webdriver.Chrome(service=service, options=options)
        driver.set_page_load_timeout(30)
        
    except Exception as e:
        print(f"Erro ao inicializar o driver do Selenium: {e}")
        return None

    try:
        print(f"Tentando carregar a página com Selenium: {url}")
        driver.get(url)
        
        driver.implicitly_wait(10)

        response_text = driver.page_source

    except TimeoutException:
        print(f"Erro de tempo limite ao carregar a página {url}.")
        return None
    except WebDriverException as e:
        print(f"Erro ao carregar a página {url} com Selenium: {e}. Pode ser um bloqueio ou problema de conexão.")
        return None
    finally:
        driver.quit()

    soup = BeautifulSoup(response_text, 'html.parser')
    return soup

soup_tripadvisor = None

if 'tripadvisor_url' in locals() and tripadvisor_url:
    print(f"\nTentando raspar a página identificada: {tripadvisor_url}")
    soup_tripadvisor = scrape_restaurantes_info(tripadvisor_url)

    if soup_tripadvisor:
        print("HTML da página do Tripadvisor obtido com sucesso!")
        page_title_tag = soup_tripadvisor.find('title')
        if page_title_tag:
            print(f"Título da página: {page_title_tag.get_text(strip=True)}")
        else:
            print("Não foi possível encontrar o título da página.")
    else:
        print("Falha ao raspar a página do Tripadvisor. Verifique o URL ou se o site está bloqueando.")
else:
    print("Não há URL do Tripadvisor válido para raspar (obtido no Bloco 1).")

print("-" * 50)

1 resposta

E aí, Marcelo! Como está?

Parabéns por ter compartilhado o seu código conosco!

Eu gostei bastante de como você trabalhou a função para organizar ao scraping com Python, aplicou muito bem o Selenium para carregar páginas dinamicamente e ainda entendeu a importância da BeautifulSoup para analisar o HTML obtido.

Falando nisso, você sabia que:

Selenium

O Selenium surgiu em 2004 como uma ferramenta para automatizar testes em navegadores. Com o tempo, ele se tornou essencial também para raspagem de dados, já que consegue lidar com páginas dinâmicas e carregadas por JavaScript.

Interessante né?!

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: o que você prefere praticar mais, automatizar interações com páginas dinâmicas usando Selenium ou extrair e estruturar dados com BeautifulSoup para análises posteriores?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!