首页 > 解决方案 > 硒类跨度不断变化的python

问题描述

我需要帮助从不断变化的跨度类中提取文本。我已经尝试了一切,Xpath,类名......但我永远无法提取文本。 在此处输入图像描述

正如您在照片中看到的,我想从左上角(“BB”)中提取数字。在下面你可以看到它是一个跨度类。这个价格是不断变化的。我试过了

driver.find_element_by_xpath['/html/body/div[1]/div[1]/div/div[3]/table/tbody/tr[1]/td[2]/div/div[3]/div[2]/div/span[1]/span'].text

driver.find_element_by_xpath('//span[@class="pane-legend-item-value-wrap"]').text

Xpath 应该没有问题......但我无法提取文本。

标签: pythonpython-3.xseleniumselenium-webdriverweb-scraping

解决方案


中的所有元素Tradingview都在一个iframe. DOM 不断变化。

下面是代码。有时它适用于options有时与options1.

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path="path to chromedriver.exe")
driver.maximize_window()
driver.implicitly_wait(10)

driver.get("https://www.binance.com/es/trade/ETH_USDT?layout=pro")
time.sleep(40) # To manually close the pop-ups, select "tradingview" and "Boillinger bands"

driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@name,'tradingview')]"))

options = driver.find_elements_by_xpath("//table[@class='chart-markup-table']//tr[1]//div[@class='pane-legend']//div[contains(@class,'study')]")
print("from options: {}".format(len(options)))
for opt in options:
    title = opt.find_element_by_xpath("./span[1]").get_attribute("innerText")
    value = opt.find_elements_by_xpath("./div//span[contains(@class,'item-value')]/span/*")
    valuelist = []
    for val in value:
        valuelist.append(val.get_attribute("innerText"))
    print(f"{title}: {valuelist}")

options1 = driver.find_elements_by_xpath("//div[@data-name='legend']/div[2]/div[2]/div[@data-name='legend-source-item']")
print("from options1: {}".format(len(options1)))
for opt in options1:
    title = opt.find_element_by_xpath(".//div[contains(@class,'titleWrapper')]").get_attribute("innerText")
    value = opt.find_elements_by_xpath(".//div[contains(@class,'valueValue')]/*")
    valuelist = []
    for val in value:
        valuelist.append(val.get_attribute("innerText"))
    print(f"{title}: {valuelist}")
from options: 4
MA (7, close, 0): ['3449.2257']
MA (25, close, 0): ['3487.6052']
MA (99, close, 0): ['2713.4087']
BB (20, 2): ['3556.2910', '4026.2328', '3086.3492']
from options1: 0

推荐阅读