首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用进行AmCharts抓取

使用进行AmCharts抓取
EN

Stack Overflow用户
提问于 2021-12-30 12:13:21
回答 2查看 187关注 0票数 0

我正在尝试从这个AmCharts对象中刮取URL图中的值

使用以下命令

代码语言:javascript
复制
driver.execute_script("AmCharts.charts[0].dataProvider")

在脚本中,它返回None,而浏览器控制台用AmCharts数据返回JSON对象

它在web界面中看起来是这样的。

如何正确地检索这个dataProvider数组。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-31 21:45:21

您需要将return添加到execute_script调用中,以便访问脚本中的值,例如driver.execute_script("return AmCharts.charts[0].dataProvider")

完整代码如下:

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver_path = r"path/to/chromedriver"

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)

driver.get("https://eg.pricena.com/en/product/oppo-reno-5g-price-in-egypt")

# scroll into the div so that the chart will render
driver.execute_script("document.getElementById('product_pricechart').scrollIntoView()")

# wait until the chart div has been rendered before accessing the data provider
wait.until(lambda x: x.find_element_by_class_name("amcharts-chart-div").is_displayed())

# display chart data
print(driver.execute_script("return AmCharts.charts[0].dataProvider"))

driver.close()
票数 1
EN

Stack Overflow用户

发布于 2021-12-30 13:03:50

图不在Selenium视图端口中,所以首先我们必须处理垂直滚动到所需的图形,然后我看到了//*[name()='tspan']包含的水平和垂直值,这些值也存在于UI中。

代码:

代码语言:javascript
复制
driver_path = r'D:\\chromedriver.exe'

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)

driver.get("https://eg.pricena.com/en/product/oppo-reno-5g-price-in-egypt")

driver.execute_script("window.scrollTo(0, 1000)")

ele = driver.find_element_by_xpath("//*[name()='svg']")
driver.execute_script("arguments[0].scrollIntoView(true);", ele)

char_val = []
for elem in driver.find_elements(By.XPATH, "//*[name()='tspan']"):
    print(elem.text)

导入:

代码语言:javascript
复制
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

输出:

代码语言:javascript
复制
Mar
May
Jul
Sep
Nov
Mar
May
Jul
Sep
Nov
5,000
5,500
6,000
6,500
7,000
7,500
8,000

Process finished with exit code 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70531526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档