【问题标题】:Get an empty List despite no error and assuming the logic is correct尽管没有错误并假设逻辑正确,但获取一个空列表
【发布时间】:2021-04-21 21:26:39
【问题描述】:

当我打印以下内容时,我得到一个空列表,我很确定代码是正确的

我正在尝试检索级别 0 和级别 1 的值

网址:https://stamprally.org/

prefectureValues = []
prefectureValueStorage = driver.find_elements_by_class_name(
    'div.header_search_inputs>select#header_search_cat1 > option.level-0.level-1')

for prefectureCode in prefectureValueStorage:
    prefectureValues.append(prefectureCode.get_attribute('value'))

print(prefectureValues)

【问题讨论】:

    标签: python selenium syntax web-crawler empty-list


    【解决方案1】:
    //select[@name='search_cat1']/option[@class='level-1' or @class='level-0']
    

    应该是一个简单的 xpath,用于获取这些类的所有选项。

    #header_search_cat1>:is(option.level-1 ,option.level-0)
    

    将是上述的 css 选择器。

    所以把它们放在一起

    prefectureValues =[x.get_attribute('value') for x in driver.find_elements_by_xpath("//select[@name='search_cat1']/option[@class='level-1' or @class='level-0']")]
    print(prefectureValues)
    

    输出

    ['145', '66', '67', '68', '69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90', '91', '92', '94', '93', '95', '96', '97', '98', '99', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '120']
    

    你也可以使用等待等

    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait 
    from selenium.webdriver.support import expected_conditions as EC
    wait=WebDriverWait(driver, 10)
    driver.get("https://stamprally.org/")
    searchCat1Options=wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"#header_search_cat1>:is(option.level-1 ,option.level-0)")))
    prefectureValues=[x.get_attribute('value') for x in searchCat1Options]
    print(prefectureValues)
    

    【讨论】:

    • 您的代码正是我想要的最简单形式。很美丽。请问您的信息来源? (如果它来自多年的经验,我想我就是这样,哈哈)
    • 很多硒的答案。
    • thanks heaps 最后一个问题,尽管按照上面建议的代码等待了,但我得到了一个类似下面的错误..有什么想法吗? totalListCount = totalListNum.append(driver.find.element_by_css_selector(AttributeError: 'WebDriver' object has no attribute 'find'
    • 我想他们回答了那个问题,还记得勾选回答的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多