【问题标题】:Getting a list of elements by using Selenium使用 Selenium 获取元素列表
【发布时间】:2022-01-18 17:55:39
【问题描述】:

我正在尝试获取博彩公司投注页面上突出显示的不同体育项目,以便稍后提取不同赔率并将它们与其他博彩公司页面进行比较。 检查结果如图所示。 我试过的代码如下:

sport_list = driver.find_elements(By.CLASS_NAME, "filters__content")

sport_list 中的运动:

打印(运动.文本)

不幸的是,sport_list 仅由一个元素组成,因此我希望它的元素数量与检查部分中可见的运动数量相同。

它只循环 1 次并返回以下内容:“ Soccer\nTennis\nBasketball\nAmericanFootball ...”

有人可以帮我找出问题所在吗?

提前致谢。

布里厄克

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping webdriver


    【解决方案1】:

    会发生什么?

    因为您选择了包含列表的<div>,所以您得到的结果集只有一个元素 (<div>)。

    driver.find_elements(By.CLASS_NAME, "filters__content")
    

    如何解决?

    <div> 中选择<li>s 并获取其文本使用xpath 或如下例css selectors

    for e in driver.find_elements(By.CSS_SELECTOR,'.filters__content li'):
        print(e.text)
    

    输出

    Football
    Tennis
    Basketball
    Football Américain
    Hockey sur glace
    Esports
    Volleyball
    Handball
    Boxe
    Rugby
    Snooker
    Fléchettes
    Cyclisme
    Waterpolo
    MMA
    Stock Car Racing
    

    【讨论】:

    • 感谢您的帮助。问题解决了:)
    【解决方案2】:

    试试

    sport_list = driver.find_elements(BY.XPATH, "//div[contains(@class, 'filters__content')]//li")
    
    

    【讨论】:

    • 谢谢。它有效:)
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    相关资源
    最近更新 更多