【问题标题】:Looping through drop downs using selenium in python在 python 中使用 selenium 遍历下拉列表
【发布时间】:2019-03-26 17:48:59
【问题描述】:

我正在尝试模拟点击在线数据工具上的多个选项,最后根据您的过滤器下载 Excel 表。

我目前正在使用 selenium 并识别 xpath。

我能够完成一次迭代并获得一张 Excel 表格,但我需要针对下拉选项的每一种可能排列进行此操作。手工操作是不现实的,因为有成千上万种选择。

上下文网站:https://data.cms.gov/mapping-medicare-disparities

有人知道可以在 selenium 中完成的功能吗?

我目前的策略是使用 xpath 创建列表,然后尝试执行置换函数来获取所有组合。但是,这不起作用,因为函数: b.find_element_by_xpath 一次只允许一个 xpath。

列表示例:

地理县州/地区

G1 = '//选择[@id="geography"]//选项[@value="c"]' G2 = '//选择[@id="geography"]//选项[@value="s"]'

地理位置 = [G1, G2]

创建组合池

导入迭代工具 从 itertools 导入产品

对于产品中的烫发(地理、调整、分析、域): 打印(烫)

使用 selenium 的实际代码

**from** selenium **import** webdriver
**from** selenium.webdriver.common.keys **import** Keys
b = webdriver.Firefox()

点击弹出窗口的代码

pop_up = b.find_element_by_xpath('/html/body/div[1]/button')
pop_up.click()

尝试使用 xpath 一次选择所有选项的代码

b.find_element_by_xpath(('//select[@id="geography"]//option[@value="c"],
'//select[@id="adjust"]//option[@value="1"],'//select[@id="analysis"]
//option[@value="base"],'//select[@id="domain"]//option[@value="d1"]'))

错误消息:InvalidArgumentException:消息:无效类型:序列,应为第 1 行第 28 列的字符串

这是因为 find_element_by_xpath(我假设)一次只会查看 1 个 xpath。

【问题讨论】:

    标签: python selenium web-crawler


    【解决方案1】:

    您在代码中尝试使用 xpath... 的语法无论如何都是错误的,但您可以将所有 xpath 放在一个列表中并循环遍历它。

    xpathlist=['//select[@id="geography"]//option[@value="c"]', '//select[@id="adjust"]//option[@value="1"]',.....]
    
    for xp in xpathlist:
        b.find_element_by_xpath(xp)
        #then add code to click or download or whatever
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多