I’m trying to get all the results for the state of São Paulo, Brazil and show them in a CSV file
This is the website: https://www.portoseguro.com.br/fale-conosco/contatos/encontre-um-corretor
This is my code, the comments are in PT-BR
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
# Configuração do Selenium
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.maximize_window()
# Lista de municípios do estado de São Paulo (exemplo com alguns municípios)
municipios = ["São Paulo", "Campinas", "Santos", "Ribeirão Preto", "Sorocaba", "São José dos Campos", "São Bernardo do Campo"]
# URL do site da Porto Seguro
url = 'https://www.portoseguro.com.br/fale-conosco/contatos/encontre-um-corretor'
driver.get(url)
# Esperar 15 segundos para garantir que a página tenha tempo suficiente para carregar
time.sleep(5)
# Fechar o aviso de cookies
try:
cookies_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, 'onetrust-accept-btn-handler'))
)
cookies_button.click()
print("Aviso de cookies fechado.")
except Exception as e:
print(f"Erro ao fechar o aviso de cookies: {e}")
# Rolar até o meio da página
driver.execute_script("window.scrollTo(0, document.body.scrollHeight / 2.5);")
print("Rolou até o meio da página")
# Esperar 20 segundos adicionais
time.sleep(20)
# Função para buscar corretores em um município
def buscar_corretores(municipio):
print(f"Iniciando busca para {municipio}")
# Esperar até que a caixa de busca esteja disponível e visível
try:
search_box = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((By.XPATH, '/html/body/div[1]/main/section/div/div/div/div[2]/div/div[1]/div/div[3]/div[6]/div/div/div[4]/input'))
)
print(f"Caixa de busca encontrada para {municipio}")
# Limpar e inserir o município no campo de busca
search_box.clear()
search_box.send_keys(municipio + ", SP")
# Pressionar Enter para realizar a busca
search_box.send_keys(Keys.RETURN)
time.sleep(10) # Espera a página carregar os resultados
# Capturar os resultados da busca
corretores = driver.find_elements(By.CSS_SELECTOR, 'li.ps-map-list__item')
print(f"{len(corretores)} corretores encontrados para {municipio}")
for corretor in corretores:
nome = corretor.find_element(By.CSS_SELECTOR, 'h2.ps-subheading').text.strip()
endereco = corretor.find_elements(By.CSS_SELECTOR, 'p.ps-caption')[0].text.strip() # Captura apenas o primeiro p.ps-caption com o endereço
todos_os_corretores.append({"nome": nome, "endereco": endereco, "municipio": municipio})
except Exception as e:
print(f"Erro ao encontrar a caixa de busca ou realizar a busca: {e}")
# Lista para armazenar todos os resultados
todos_os_corretores = []
# Iterar sobre cada município e buscar corretores
for municipio in municipios:
buscar_corretores(municipio)
# Fechar o navegador
driver.quit()
# Salvar os resultados em um arquivo CSV
with open('corretores_porto_seguro.csv', mode='w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=["nome", "endereco", "municipio"])
writer.writeheader()
for corretor in todos_os_corretores:
writer.writerow(corretor)
print(f"Total de corretores encontrados: {len(todos_os_corretores)}")
And I’m getting the following errors:
Stacktrace:
GetHandleVerifier 0x00A48923+23283
(No symbol) 0x00A0E934
(No symbol) [0x00940733]
(No symbol) [0x0098326F]
(No symbol) [0x009834AB]
(No symbol) [0x009BEE42]
(No symbol) [0x009A4464]
(No symbol) [0x009BCB8D]
(No symbol) [0x009A41B6]
(No symbol) [0x00978017]
(No symbol) [0x0097890D]
GetHandleVerifier [0x00B3A5F3+1013699]
GetHandleVerifier [0x00B43E4C+1052700]
GetHandleVerifier [0x00B3D4B4+1025668]
GetHandleVerifier [0x00A6EA2B+179195]
(No symbol) [0x00A16833]
(No symbol) [0x00A13198]
(No symbol) [0x00A13337]
(No symbol) [0x00A0B4BE]
BaseThreadInitThunk [0x76EDFCC9+25]
RtlGetAppContainerNamedObjectPath [0x779C80CE+286]
RtlGetAppContainerNamedObjectPath [0x779C809E+238]
For some reason, Selenium is not finding the Google Maps API search bar or I’m just not improving it correctly.
Iago Pereira de Barros is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.