CodeGym /Curso Java /Python SELF PT /Automatização do scroll de página e navegação por links

Automatização do scroll de página e navegação por links

Python SELF PT
Nível 36 , Lição 1
Disponível

1. Scroll automático da página

Imagina que você tá rolando aquele feed infinito e preguiçoso na rede social, onde o conteúdo carrega à medida que você desce a página. Esse scroll mágico, na real, tem uma API que dá pra automatizar com Selenium.

Método execute_script()

O método execute_script() no Selenium permite rodar código JavaScript na página, e isso é uma ferramenta poderosa quando o assunto é scroll. Bora ver como usar isso pra rolar a página.

Python

from selenium import webdriver
import time

# Inicialização do browser driver
driver = webdriver.Chrome()

# Abrindo a página de destino
driver.get('https://example.com/scrolling_page')

# Rolando a página pra baixo
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)  # Aguardando pro conteúdo carregar

# Rolando a página pra cima (só pra variar)
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")

# Encerrando a sessão
driver.quit()

Nesse script, usamos window.scrollTo() pra rolar a página. Os argumentos (0, document.body.scrollHeight) indicam o scroll do início ao final da página. Uma técnica simples e eficiente pra garantir que todos os elementos dinâmicos sejam carregados.

Por que isso é importante?

Usar o execute_script() pra scroll permite carregar conteúdo que pode estar inicialmente escondido, tipo em scrolls infinitos. Isso é especialmente útil pra redes sociais e feeds de notícias onde o conteúdo carrega dinamicamente.

2. Navegar por links

Agora que já dominamos o scroll, bora pro próximo desafio — navegar por links automaticamente. Isso é essencial pra extrair dados, especialmente quando a info tá espalhada por várias páginas.

Básico sobre navegação por links

Pra clicar num link, podemos usar o método click() no elemento selecionado. Vamos ver um exemplo básico:

Python

from selenium import webdriver

# Inicializando o browser driver
driver = webdriver.Chrome()

# Abrindo a página de destino
driver.get('https://example.com/links_page')

# Encontrando o link pelo texto e clicando
link = driver.find_element_by_link_text('Next Page')
link.click()

# Encerrando a sessão
driver.quit()

Nesse exemplo, procuramos o link pelo conteúdo textual. Mas e se o texto não for único? Nesse caso, dá pra usar métodos mais específicos como find_element_by_xpath() ou find_element_by_css_selector().

Python

# Encontrando o link pelo XPath
link = driver.find_element_by_xpath('//a[@href="/next_page"]')
link.click()

Vantagens de navegar automaticamente por links

Navegar por links com Selenium é muito útil pra automatizar a coleta de dados em páginas com paginação ou quando as informações estão espalhadas por várias seções do site. Perfeito pra explorar resultados de busca ou ver catálogos de produtos em sites.

3. Combinando scroll e navegação

Agora imagina que você precisa fazer scroll pra encontrar o link ou o elemento certo e depois navegar pra outra página. Esse processo combinado também pode ser automatizado.

Exemplo de script combinado

Python

from selenium import webdriver
import time

# Inicializando o browser driver
driver = webdriver.Chrome()

# Abrindo a página de destino
driver.get('https://example.com/scroll_and_click')

# Fazendo scroll pra carregar elementos escondidos
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)

# Encontrando e clicando no link desejado
link = driver.find_element_by_xpath('//a[text()="Load More"]')
link.click()

# Encerrando a sessão
driver.quit()

O que pode dar errado?

Ao lidar com páginas dinâmicas, às vezes os elementos podem não carregar a tempo ou não serem carregados completamente. Nesses casos, é preciso usar métodos de espera pra garantir que os elementos com os quais você quer interagir já estejam disponíveis.

Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Esperando até que o elemento esteja clicável
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[text()="Load More"]'))
)
element.click()

Usar métodos de espera ajuda a evitar falhas causadas por elementos não prontos e garante que o script funcione de forma mais estável.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION