【问题标题】:Parsing sub-element using selenium - python使用 selenium 解析子元素 - python
【发布时间】:2021-07-24 19:54:07
【问题描述】:

这里是html结构的截图:

我想遍历league-list(每个league-item) 的每一项,寻找aria-expanded 的值。

这是我的代码:

_1bet = 'https://1bet.com/ca/sports/tennis?time_range=all'
driver.get(_1bet) # enter the website
league1 = driver.find_elements_by_class_name('league-list')[0]  # first league-item
league1.find_element_by_xpath(".//div[@class='league-title.d-flex.justify-content-between.align-items-center.collapsible']")

Selenium 找不到任何元素,我不明白为什么。 作为参考,我受到另一篇文章的启发: Parsing nested elements using selenium not working - python

【问题讨论】:

  • @Prophet,很抱歉再次打扰,但如果您能提供帮助,我们将不胜感激

标签: python python-3.x selenium selenium-webdriver web-scraping


【解决方案1】:

首先,您必须在访问该页面的元素之前添加一个等待加载页面。
然后您可以将所有这些元素放入列表中,然后遍历列表以获取每个元素属性。
我不确定该列表最初是否已扩展,因为它显示在您的图片上。
也不确定所有这些联赛冠军元素是否与您提供的选择器匹配。
如果没有 - 我们可以相应地更正代码

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, 20)

_1bet = 'https://1bet.com/ca/sports/tennis?time_range=all'
driver.get(_1bet) # enter the website
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.league-list")))
league1 = driver.find_elements_by_class_name('league-list')[0]  # first league-item
titles = league1.find_elements_by_xpath(".//div[@class='league-title.d-flex.justify-content-between.align-items-center.collapsible']")
for title in titles:
    print(title.get_attribute("aria-expanded"))

【讨论】:

  • 它没有用。它似乎没有找到它,因为它返回一个空的标题列表。我现在需要离开。稍后会继续测试。所以如果我没有尽快回答,我很抱歉
  • 没问题。只需在driver.get(_1bet) 之后延迟time.sleep(10) 之类的东西,然后让我知道这是否有效。我们无法访问该页面是个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多