python - 使用 selenium 从 Highcharts 抓取数据

标签 python selenium highcharts

我正在尝试从 highchart 中抓取数据。我查看了类似的问题,但不了解 script_execute 的工作原理或如何使用浏览器检测 js。这是我当前的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# Core settings
chrome_path = r"C:\Users\X\Y\chromedriver_win32\chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.implicitly_wait(15)

stats_url = 'https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/statistics/'

driver.get(stats_url)
driver.find_element_by_link_text('by Source').click()
driver.find_element_by_id('custom-date-range').click()
year = driver.find_element_by_id('date-range-start')
year.click()
for i in range(5): # goes back 5 years
    year.send_keys(Keys.ARROW_DOWN)
driver.find_element_by_id('date-range-submit').click()

我想从图表中抓取“下载”数据(虽然不仅仅是这个页面,还有很多页面)。当我使用自定义搜索选项时,网站自动生成的 csv 文件不会更新。所以唯一的办法就是从图中抓取数据。我该怎么做?

最佳答案

Mozilla 提供了一个简单的 REST API 来获取统计信息,因此您无需使用 Selenium。

使用 requests 模块:

url = "https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/statistics/downloads-day-20170823-20171023.json"
data = requests.get(url).json()

要选择范围,只需更新 URL 中的日期。

但是如果你还是愿意用selenium来废弃图表:

dates = driver.execute_script("return Highcharts.charts[0].series[0].xData");
users = driver.execute_script("return Highcharts.charts[0].series[0].yData");
downloads = driver.execute_script("return Highcharts.charts[0].series[1].yData");

关于python - 使用 selenium 从 Highcharts 抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852584/

相关文章:

python - 我如何在我的网络服务器上运行这个 python 脚本? TorBulkExitList.py

google-chrome - Selenium 网络驱动程序, Chrome 。我在运行 Python 测试期间(在开始和结束时)遇到未实现的错误

selenium - Java Selenium - 如何在基于 AngularJS 的页面中单击没有 ID 或 ng-class 的按钮

javascript - Highcharts - 切换自动缩放

javascript - 放大 Highcharts 中的点

python - Django sql 检查

python - 如何使用键 :value format from a CSV file using Python? 创建字典列表

python - 零的 numpy 处理 : distinguishing -0 from 0

java - Chrome 选项 - Selenium 3.10 - NoSuchMethodError : com. google.common.collect.ImmutableList.toImmutableList()

javascript - 来自 API 数据 (JSON) 的 Highcharts Windrose