10 Boas Práticas com Selenium para Evitar Bloqueios e Melhorar Sua Automação Web

1. Não Abuse no Volume de Requisições Muitas vezes na ânsia de coletar os dados exageramos na quantidade de requisições, o que gera riscos de bloqueios mesmo em sites famosos. Por exemplo se acessar o arquivo robots.txt da wikipedia verá a seguinte mensagem: "algumas aranhas mal-comportadas por aí que são muito rápidas. Se você for irresponsável, seu acesso ao site poderá ser bloqueado". Respeite robots.txt e limites de requisições para evitar bloqueios. Use delays entre ações para não sobrecarregar o servidor. 2. Crie um Perfil específico para isso no Chrome Evite login repetido, configure um perfil de usuário para manter cookies, cache e sessões salvas. Como usar: from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("--user-data-dir=C:/caminho/do/perfil") driver = webdriver.Chrome(options=options) Vantagem: Mantém configurações pessoais (extensões, preferências) entre execuções. 3. Defina uma Pasta Padrão para Downloads Evite bagunça e arquivos temporários, configure um diretório fixo para baixar arquivos, e evite deixar os seus arquivos pessoais misturados com os arquivos baixados pela automação. prefs = { "download.default_directory": "C:/caminho/para/downloads", "download.prompt_for_download": False } options.add_experimental_option("prefs", prefs) Vantagem: Organiza os downloads e facilita a automação de arquivos. 4. Use Esperas (Waits) Adequadas Evite time.sleep() fixos, pois tornam o script lento e pouco confiável. Prefira WebDriverWait + expected_conditions para esperar por elementos de forma dinâmica: from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "meu-elemento")) ) 5. Selecione Elementos de Forma Robusta Priorize seletores como ID, CSS Selectors ou XPath estáveis. Evite XPath muito complexos ou dependentes de textos variáveis. 6. Gerencie Sessões e Drivers Corretamente Sempre feche o navegador com driver.quit() (não apenas driver.close()). Acha que algo importante ficou de fora? Adicione nos comentários.

Apr 24, 2025 - 02:49
 0
10 Boas Práticas com Selenium para Evitar Bloqueios e Melhorar Sua Automação Web

1. Não Abuse no Volume de Requisições

Muitas vezes na ânsia de coletar os dados exageramos na quantidade de requisições, o que gera riscos de bloqueios mesmo em sites famosos. Por exemplo se acessar o arquivo robots.txt da wikipedia verá a seguinte mensagem: "algumas aranhas mal-comportadas por aí que são muito rápidas. Se você for irresponsável, seu acesso ao site poderá ser bloqueado".
Mensagem de bloqueio a requisições em grande volume na wikipedia

  • Respeite robots.txt e limites de requisições para evitar bloqueios.
  • Use delays entre ações para não sobrecarregar o servidor.

2. Crie um Perfil específico para isso no Chrome

Evite login repetido, configure um perfil de usuário para manter cookies, cache e sessões salvas. Como usar:

  from selenium import webdriver
  options = webdriver.ChromeOptions()
  options.add_argument("--user-data-dir=C:/caminho/do/perfil")
  driver = webdriver.Chrome(options=options)

Vantagem: Mantém configurações pessoais (extensões, preferências) entre execuções.

3. Defina uma Pasta Padrão para Downloads

Evite bagunça e arquivos temporários, configure um diretório fixo para baixar arquivos, e evite deixar os seus arquivos pessoais misturados com os arquivos baixados pela automação.

  prefs = {
      "download.default_directory": "C:/caminho/para/downloads",
      "download.prompt_for_download": False
  }
  options.add_experimental_option("prefs", prefs)

Vantagem: Organiza os downloads e facilita a automação de arquivos.

4. Use Esperas (Waits) Adequadas

  • Evite time.sleep() fixos, pois tornam o script lento e pouco confiável.
  • Prefira WebDriverWait + expected_conditions para esperar por elementos de forma dinâmica:
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.support import expected_conditions as EC
  from selenium.webdriver.common.by import By

  element = WebDriverWait(driver, 10).until(
      EC.presence_of_element_located((By.ID, "meu-elemento"))
  )  

5. Selecione Elementos de Forma Robusta

  • Priorize seletores como ID, CSS Selectors ou XPath estáveis.
  • Evite XPath muito complexos ou dependentes de textos variáveis.

6. Gerencie Sessões e Drivers Corretamente

  • Sempre feche o navegador com driver.quit() (não apenas driver.close()).

Acha que algo importante ficou de fora? Adicione nos comentários.