【问题标题】:How to find value from multiples classes ahveing same name using python selenium?如何使用 python selenium 从多个具有相同名称的类中查找值?
【发布时间】:2021-08-04 22:10:09
【问题描述】:

我能够从具有跨度的第一类中找到价值。 我正在尝试从内部类中查找价值,但它们具有相同的名称。

这里是html代码:

<a class="jss1qhutbl jss1jy44eu" href="/quote/nasdaq-cxdc" aria-label="View quote detail page of CXDC" style="width: 60px; text-align: left;">CXDC</a>
<span class="jss1qhutbl jss15180ci" style="width: 80px; text-align: right;">0.9300</span>

<a class="jss1qhutbl jss1jy44eu" href="/quote/nasdaq-arct" aria-label="View quote detail page of ARCT" style="width: 60px; text-align: left;">ARCT</a>
<span class="jss1qhutbl jss15180ci" style="width: 80px; text-align: right;">58.25</span>

我找到了 CXDC 和 ARCT 的名称:

driver.find_element_by_css_selector("a.jss1qhutbl.jss1jy44eu")
driver.find_elements_by_css_selector("a.jss1qhutbl.jss1jy44eu")[1]

在帮助下,我找到了 CXDC 的价格:

driver.find_element_by_xpath("//span[contains(@class,'jss1qhutbl jss15180ci')]").text

但我无法找到 ARCT 的价格:

我试过这个:

driver.find_element_by_xpath('(.//span[@class = "jss1qhutbl jss15180ci"])')[1].text

【问题讨论】:

  • &lt;a&gt;&lt;span&gt;之前有没有父标签?

标签: python selenium


【解决方案1】:

你使用的 Xpath 是错误的。看看这是否有效

driver.find_element_by_xpath("//span[@class='jss1qhutbl jss15180ci'][1]").text

driver.find_element_by_xpath("//a[contains(@aria-label,'ARCT')]//following::span").text

【讨论】:

  • 您的解决方案从“jss1qhutbl jss15180ci”的同一类中获取第二个值。事实上,您在这里查看我试图获取第一、第二和第三股票价值的页面。请看这里:webull.com/quote/rankgainer
  • 尝试将索引从 2 更改为 1,这将获取您期望的值。更新了我的代码。
  • 最后我选择了一个复杂的 xpath,如下所示: //*[@id='app']/section/section[2]/section/section[2]/div[2]/div [2]/span[2] 但它并不优雅。它有效。
猜你喜欢
  • 1970-01-01
  • 2017-06-09
  • 2021-06-08
  • 1970-01-01
  • 2020-11-03
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
相关资源
最近更新 更多