Selenium按标签名称选项搜索
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium按标签名称选项搜索相关的知识,希望对你有一定的参考价值。
我试图从一个名为Correios的网站获取所有数据,在这个网站上,我需要处理一些下拉菜单,我遇到了一些问题:它返回一个带有一堆空字符串的列表。
chrome_path = r"C:UsersGustavoDesktopgeckodriverchromedriver.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_tag_name("option")
for valores in optEstados:
print(valores.text.encode())
我从中得到的是:
b''
b'ACRE'
b'ALAGOAS'
b'AMAPxc3x81'
b'AMAZONAS'
b'BAHIA'
b'CEARxc3x81'
b'DISTRITO FEDERAL'
b'ESPxc3x8dRITO SANTO'
b'GOIxc3x81S'
b'MARANHxc3x83O'
b'MINAS GERAIS'
b'MATO GROSSO DO SUL'
b'MATO GROSSO'
b'PARxc3x81'
b'PARAxc3x8dBA'
b'PERNAMBUCO'
b'PIAUxc3x8d'
b'PARANxc3x81'
b'RIO DE JANEIRO'
b'RIO GRANDE DO NORTE'
b'RONDxc3x94NIA'
b'RORAIMA'
b'RIO GRANDE DO SUL'
b'SANTA CATARINA'
b'SERGIPE'
b'Sxc3x83O PAULO'
b'TOCANTINS'
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
b''
如何删除空b“”?
答案
如果我理解,你想要找到所有这些选项。
试试这个xPath来定位下拉元素:
//*[@id="estadoAgencia"]/option
代码示例:
chrome_path = r"C:UsersGustavoDesktopgeckodriverchromedriver.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']")
# find elements in dropdown
optEstados = driver.find_elements_by_xpath("//*[@id='estadoAgencia']/option")
for valores in optEstados:
print(valores.text.encode())
通过这个xPath你将得到所有下拉元素,除了一个空字符串,这是在这个下拉列表中。输出:
b''
b'ACRE'
b'ALAGOAS'
b'AMAPxc3x81'
b'AMAZONAS'
b'BAHIA'
b'CEARxc3x81'
b'DISTRITO FEDERAL'
b'ESPxc3x8dRITO SANTO'
b'GOIxc3x81S'
b'MARANHxc3x83O'
b'MINAS GERAIS'
b'MATO GROSSO DO SUL'
b'MATO GROSSO'
b'PARxc3x81'
b'PARAxc3x8dBA'
b'PERNAMBUCO'
b'PIAUxc3x8d'
b'PARANxc3x81'
b'RIO DE JANEIRO'
b'RIO GRANDE DO NORTE'
b'RONDxc3x94NIA'
b'RORAIMA'
b'RIO GRANDE DO SUL'
b'SANTA CATARINA'
b'SERGIPE'
b'Sxc3x83O PAULO'
b'TOCANTINS'
注意:第一个元素是一个空字符串,因为:
另一答案
您的代码需要进行一些小改动:
dropdownEstados = driver.find_element_by_xpath("""//*[@id="estadoAgencia"]""")
optEstados = dropdownEstados.find_elements_by_tag_name("option")
for valores in optEstados:
print(valores.text.encode())
另一答案
要从ID为<options>
的DropDown的所有estadoAgencia
中检索文本,因为它是<select>
标记,使用与<select>
标记关联的方法会更容易和有效,您可以使用以下解决方案:
- 代码块:
estado_select = Select(driver.find_element_by_id('estadoAgencia')) for opt in estado_select.options: print(opt.get_attribute('innerhtml'))
- 控制台输出:
ACRE ALAGOAS AMAPÁ AMAZONAS BAHIA CEARÁ DISTRITO FEDERAL ESPÍRITO SANTO GOIÁS MARANHÃO MINAS GERAIS MATO GROSSO DO SUL MATO GROSSO PARÁ PARAÍBA PERNAMBUCO PIAUÍ PARANÁ RIO DE JANEIRO RIO GRANDE DO NORTE RONDÔNIA RORAIMA RIO GRANDE DO SUL SANTA CATARINA SERGIPE SÃO PAULO TOCANTINS
以上是关于Selenium按标签名称选项搜索的主要内容,如果未能解决你的问题,请参考以下文章