从高图表中抓取数据
Scraping data from high charts
我有两个问题:第一,无法点击显示全部底部;其次,我无法从高位图表中获取数据。
我在 Stack Overflow 上看到了高图表的一些示例;但是,我不明白人们是如何确定我们要执行的 JS 代码的。
我尝试了以下代码来实现:
from selenium import webdriver
DRIVER_PATH = r"C:\Users\XX\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
url = "https://siterankdata.com/wsj.com"
driver.get(url)
driver.find_element_by_xpath('//*[@id="smallchart"]/div/div/svg/g[17]/g/text/tspan').click() # Does not work I try to click on the show all button.
如有任何帮助,我将不胜感激!
单击 show all
按钮使用 WebDriverWait
() 并等待 element_to_be_clickable
() 和以下 xpath
driver.get(url)
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@id='smallchart']//*[name()='svg']/*[name()='g'][17]/*[name()='g']/*[name()='text']/*[name()='tspan']"))).click()
您需要导入以下库
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
文本为全部显示的元素是svg element so to click on the element you have to induce for the element_to_be_clickable()
and you can use either of the following :
使用CSS_SELECTOR
:
driver.get("https://siterankdata.com/wsj.com")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#smallchart svg g text[text-anchor='start'] tspan"))).click()
使用XPATH
:
driver.get("https://siterankdata.com/wsj.com")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id="smallchart"]//*[name()='svg']//*[name()='g']//*[name()='text']//*[name()='tspan' and text()='Show all']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
参考资料
您可以在 中找到一些相关讨论:
我有两个问题:第一,无法点击显示全部底部;其次,我无法从高位图表中获取数据。
我在 Stack Overflow 上看到了高图表的一些示例;但是,我不明白人们是如何确定我们要执行的 JS 代码的。
我尝试了以下代码来实现:
from selenium import webdriver
DRIVER_PATH = r"C:\Users\XX\Downloads\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
url = "https://siterankdata.com/wsj.com"
driver.get(url)
driver.find_element_by_xpath('//*[@id="smallchart"]/div/div/svg/g[17]/g/text/tspan').click() # Does not work I try to click on the show all button.
如有任何帮助,我将不胜感激!
单击 show all
按钮使用 WebDriverWait
() 并等待 element_to_be_clickable
() 和以下 xpath
driver.get(url)
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@id='smallchart']//*[name()='svg']/*[name()='g'][17]/*[name()='g']/*[name()='text']/*[name()='tspan']"))).click()
您需要导入以下库
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
文本为全部显示的元素是svg element so to click on the element you have to induce element_to_be_clickable()
and you can use either of the following
使用
CSS_SELECTOR
:driver.get("https://siterankdata.com/wsj.com") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#smallchart svg g text[text-anchor='start'] tspan"))).click()
使用
XPATH
:driver.get("https://siterankdata.com/wsj.com") WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id="smallchart"]//*[name()='svg']//*[name()='g']//*[name()='text']//*[name()='tspan' and text()='Show all']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
参考资料
您可以在