我正试图从一个名为Correios的网站获取所有数据,在该网站中,我需要处理一些下拉菜单,但我遇到了一些问题,例如:有两个下拉菜单具有一定的依赖性,我想创建一个会同时通过两个下拉菜单中每个项目的所有选项并获取数据的机器人。
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.select import Select
chrome_path = r"C:\\Users\\Gustavo\\Desktop\\geckodriver\\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
lista_x = []
driver.get("http://www2.correios.com.br/sistemas/agencias/")
driver.maximize_window()
dropdownEstados = driver.find_elements_by_xpath("""//*[@id="estadoAgencia"]""")
optEstados = driver.find_elements_by_xpath("""//*[@id='estadoAgencia']/option""")
optMunicipios = driver.find_elements_by_xpath("""//*[@id="municipioAgencia"]/option""")
for valores in optEstados:
encoded = valores.text.encode()
valores.click()
for municipio in optMunicipios:
municipio.click()
有两个下拉菜单,一个下拉菜单选择州,另一个下拉菜单选择县,第二个下拉菜单直接取决于第一个下拉菜单。我想知道在for中选择一个州之后,如何通过所有县选项,对所有州都这样做。
输出:
selecting Estado ACRE
...selecting Municipio ACRELANDIA
...selecting Municipio ASSIS BRASIL
...selecting Municipio BRASILEIA
...selecting Municipio BUJARI
...selecting Municipio CAPIXABA
...selecting Municipio CRUZEIRO DO SUL
...selecting Municipio EPITACIOLANDIA
...selecting Municipio FEIJO
...selecting Municipio JORDAO
...selecting Municipio MANCIO LIMA
...selecting Municipio MANOEL URBANO
...selecting Municipio MARECHAL THAUMATURGO
...selecting Municipio PLACIDO DE CASTRO
...selecting Municipio PORTO ACRE
...selecting Municipio PORTO WALTER
...selecting Municipio RIO BRANCO
...selecting Municipio RODRIGUES ALVES
...selecting Municipio SANTA ROSA DO PURUS
...selecting Municipio SENA MADUREIRA
...selecting Municipio SENADOR GUIOMARD
...selecting Municipio TARAUACA
...selecting Municipio XAPURI
selecting Estado ALAGOAS
...selecting Municipio AGUA BRANCA
...selecting Municipio ANADIA
...selecting Municipio ARAPIRACA
...selecting Municipio ATALAIA
...selecting Municipio BARRA DE SANTO ANTONIO
...selecting Municipio BARRA DE SAO MIGUEL
...selecting Municipio BATALHA
...selecting Municipio BELEM
...selecting Municipio BELO MONTE
...selecting Municipio BOCA DA MATA
...selecting Municipio BRANQUINHA
...selecting Municipio CACIMBINHAS
...selecting Municipio CAJUEIRO
...selecting Municipio CAMPESTRE
...selecting Municipio CAMPO ALEGRE
...selecting Municipio CAMPO GRANDE
...selecting Municipio CANAPI
...selecting Municipio CAPELA
...selecting Municipio CARNEIROS
...selecting Municipio CHA PRETA
...selecting Municipio COITE DO NOIA
...selecting Municipio COLONIA LEOPOLDINA
...selecting Municipio COQUEIRO SECO
...selecting Municipio CORURIPE
...selecting Municipio CRAIBAS
...selecting Municipio DELMIRO GOUVEIA
...selecting Municipio DOIS RIACHOS
...selecting Municipio ESTRELA DE ALAGOAS
...selecting Municipio FEIRA GRANDE
...selecting Municipio FELIZ DESERTO
...selecting Municipio FLEXEIRAS
...selecting Municipio GIRAU DO PONCIANO
...selecting Municipio IBATEGUARA
...selecting Municipio IGACI
...selecting Municipio IGREJA NOVA
...selecting Municipio INHAPI
...selecting Municipio JACARE DOS HOMENS
...selecting Municipio JACUIPE
...selecting Municipio JAPARATINGA
...selecting Municipio JARAMATAIA
...selecting Municipio JEQUIA DA PRAIA
...selecting Municipio JOAQUIM GOMES
...selecting Municipio JUNDIA
...selecting Municipio JUNQUEIRO
...selecting Municipio LAGOA DA CANOA
...selecting Municipio LIMOEIRO DE ANADIA
...selecting Municipio MACEIO
...selecting Municipio MAJOR ISIDORO
...selecting Municipio MAR VERMELHO
...selecting Municipio MARAGOGI
...selecting Municipio MARAVILHA
...selecting Municipio MARECHAL DEODORO
...selecting Municipio MARIBONDO
...selecting Municipio MATA GRANDE
...selecting Municipio MATRIZ DE CAMARAGIBE
...selecting Municipio MESSIAS
...selecting Municipio MINADOR DO NEGRAO
...selecting Municipio MONTEIROPOLIS
...selecting Municipio MURICI
...selecting Municipio NOVO LINO
...selecting Municipio OLHO D'AGUA DAS FLORES
...selecting Municipio OLHO D'AGUA DO CASADO
...selecting Municipio OLHO D'AGUA GRANDE
...selecting Municipio OLIVENCA
...selecting Municipio OURO BRANCO
...selecting Municipio PALESTINA
...selecting Municipio PALMEIRA DOS INDIOS
...selecting Municipio PAO DE ACUCAR
...selecting Municipio PARICONHA
...selecting Municipio PARIPUEIRA
...selecting Municipio PASSO DE CAMARAGIBE
...selecting Municipio PAULO JACINTO
...selecting Municipio PENEDO
...selecting Municipio PIACABUCU
...selecting Municipio PILAR
...selecting Municipio PINDOBA
...selecting Municipio PIRANHAS
...selecting Municipio POCO DAS TRINCHEIRAS
...selecting Municipio PORTO CALVO
...selecting Municipio PORTO DE PEDRAS
...selecting Municipio PORTO REAL DO COLEGIO
...selecting Municipio QUEBRANGULO
...selecting Municipio RIO LARGO
...selecting Municipio ROTEIRO
...selecting Municipio SANTANA DO IPANEMA
...selecting Municipio SANTANA DO MUNDAU
...selecting Municipio SAO BRAS
...selecting Municipio SAO JOSE DA LAJE
...selecting Municipio SAO JOSE DA TAPERA
...selecting Municipio SAO LUIS DO QUITUNDE
...selecting Municipio SAO MIGUEL DOS CAMPOS
...selecting Municipio SAO MIGUEL DOS MILAGRES
...selecting Municipio SAO SEBASTIAO
...selecting Municipio SATUBA
...selecting Municipio SENADOR RUI PALMEIRA
...selecting Municipio TANQUE D'ARCA
...selecting Municipio TAQUARANA
...selecting Municipio TEOTONIO VILELA
...selecting Municipio TRAIPU
...selecting Municipio UNIAO DOS PALMARES
...selecting Municipio VICOSA
[Decode error - output not utf-8]
...selecting Municipio AGUA BRANCA
...selecting Municipio ANADIA
...selecting Municipio ARAPIRACA
...selecting Municipio ATALAIA
...selecting Municipio BARRA DE SANTO ANTONIO
...selecting Municipio BARRA DE SAO MIGUEL
...selecting Municipio BATALHA
...selecting Municipio BELEM
...selecting Municipio BELO MONTE
...selecting Municipio BOCA DA MATA
...selecting Municipio BRANQUINHA
...selecting Municipio CACIMBINHAS
...selecting Municipio CAJUEIRO
...selecting Municipio CAMPESTRE
...selecting Municipio CAMPO ALEGRE
...selecting Municipio CAMPO GRANDE
...selecting Municipio CANAPI
...selecting Municipio CAPELA
...selecting Municipio CARNEIROS
...selecting Municipio CHA PRETA
...selecting Municipio COITE DO NOIA
...selecting Municipio COLONIA LEOPOLDINA
...selecting Municipio COQUEIRO SECO
...selecting Municipio CORURIPE
...selecting Municipio CRAIBAS
...selecting Municipio DELMIRO GOUVEIA
...selecting Municipio DOIS RIACHOS
...selecting Municipio ESTRELA DE ALAGOAS
...selecting Municipio FEIRA GRANDE
...selecting Municipio FELIZ DESERTO
...selecting Municipio FLEXEIRAS
...selecting Municipio GIRAU DO PONCIANO
...selecting Municipio IBATEGUARA
...selecting Municipio IGACI
...selecting Municipio IGREJA NOVA
...selecting Municipio INHAPI
...selecting Municipio JACARE DOS HOMENS
...selecting Municipio JACUIPE
...selecting Municipio JAPARATINGA
...selecting Municipio JARAMATAIA
...selecting Municipio JEQUIA DA PRAIA
...selecting Municipio JOAQUIM GOMES
...selecting Municipio JUNDIA
...selecting Municipio JUNQUEIRO
...selecting Municipio LAGOA DA CANOA
...selecting Municipio LIMOEIRO DE ANADIA
...selecting Municipio MACEIO
...selecting Municipio MAJOR ISIDORO
...selecting Municipio MAR VERMELHO
...selecting Municipio MARAGOGI
...selecting Municipio MARAVILHA
...selecting Municipio MARECHAL DEODORO
...selecting Municipio MARIBONDO
...selecting Municipio MATA GRANDE
...selecting Municipio MATRIZ DE CAMARAGIBE
...selecting Municipio MESSIAS
...selecting Municipio MINADOR DO NEGRAO
...selecting Municipio MONTEIROPOLIS
...selecting Municipio MURICI
...selecting Municipio NOVO LINO
...selecting Municipio OLHO D'AGUA DAS FLORES
...selecting Municipio OLHO D'AGUA DO CASADO
...selecting Municipio OLHO D'AGUA GRANDE
...selecting Municipio OLIVENCA
...selecting Municipio OURO BRANCO
...selecting Municipio PALESTINA
...selecting Municipio PALMEIRA DOS INDIOS
...selecting Municipio PAO DE ACUCAR
...selecting Municipio PARICONHA
...selecting Municipio PARIPUEIRA
...selecting Municipio PASSO DE CAMARAGIBE
答案 0 :(得分:0)
这有效
time.sleep(3) #this time allows the page load all the elements
estadoList = Select(driver.find_element_by_name('estadoAgencia'))
for index in range(1,len(estadoList.options)):
select = Select(driver.find_element_by_name('estadoAgencia'))
print("selecting Estado",select.options[index].text)
select.select_by_index(index)
time.sleep(2)
municípioList = Select(driver.find_element_by_name('municipioAgencia'))
for index_b in range(1,len(municípioList.options)):
select_b = Select(driver.find_element_by_name('municipioAgencia'))
print("...selecting Municipio",select_b.options[index_b].text)
select_b.select_by_index(index_b)
time.sleep(2)
在导入中使用以下内容
import time