【问题标题】:how can i extract this value from a website, with python, selenium and chromedriver如何使用 python、selenium 和 chromedriver 从网站中提取此值
【发布时间】:2020-06-02 18:41:53
【问题描述】:
<div class="flexible row ng-scope">
    <!-- ngRepeat: graph in graphs track by $index --><figure class="figure-gauge flexible column ng-scope" data-ng-repeat="graph in graphs track by $index">
        <figcaption class="rigid">
            <div class="data-value">
                <b class="ng-binding">
                    334
                </b>
            </div>

我需要提取出现的值 (334),我从 Chrome Web Inspector 中获取。我正在使用 python 和 selenium,我尝试了很多代码,但没有一个对我有用,感谢任何帮助。

我试试这个:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

DRIVER_PATH = r'C:\chromedriver.exe'
options = Options()
options.headless = True
options.add_argument("--window-size=1920,1200")

driver = webdriver.Chrome(options=options, executable_path=DRIVER_PATH)
driver.get("https://iot.app.initialstate.com/embed/#/tiles/bkt_kb448kawjvmhe")
data = driver.find_element_by_class_name('ng-binding')
print
driver.quit()

错误: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css selector”,“selector”:“.ng-binding”} (会话信息:headless chrome=83.0.4103.61)

硒 3.141.0 Python 3.8

【问题讨论】:

  • 欢迎来到 SOF!请添加您尝试过的代码n没有工作?
  • 如果有错误也添加错误
  • 我尝试了很多代码,但没有一个对我有用向我们展示你尝试了什么以及你得到的输出。
  • URL 需要时间才能完全加载。因此,您需要让驱动程序等到元素可见。一次,它会变得可见,然后您应该执行操作以废弃您想要的值。参考:stackoverflow.com/questions/26566799/…
  • 非常感谢 Vishal 提供的信息

标签: python python-3.x selenium selenium-chromedriver


【解决方案1】:

您需要提供一些sleep() 来加载图表上的值,然后使用下面的xpath 来获取值。

driver.get("https://iot.app.initialstate.com/embed/#/tiles/bkt_kb448kawjvmhe")
time.sleep(3)
print(driver.find_element_by_xpath("(//div[@class='data-value']/b)[last()]").text.strip())

【讨论】:

  • 它工作,非常感谢你,就像一个小问题。我总是要等那么久吗?
  • 在这种情况下并非总是如此,因为图表需要时间来加载您必须提供一些睡眠的值。
【解决方案2】:

您可以使用xpath提取它

val = driver.find_element_by_xpath('/html/body/div[1]/article/div[2]/div/div/div[1]/article/div/figure/figcaption/div/b').text
print(val)

【讨论】:

  • 后来我也尝试了你的解决方案,起初它没有用,在添加“time.sleep”作为另一个答案后,它工作正常,但它采用了第一个指标的值,这是 100 而不是值 334,无论如何感谢您的时间和回答。
猜你喜欢
  • 2019-01-05
  • 2021-04-27
  • 2018-04-13
  • 2019-09-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2020-10-29
  • 2020-07-02
相关资源
最近更新 更多