ChartJS 如何使用Python从这个交互式图形中获取日期和价格?

6ojccjat  于 2023-10-18  发布在  Chart.js
关注(0)|答案(1)|浏览(102)

我试图通过使用Selenium库进行web抓取来从这个图(https://www.mtgprice.com/sets/Ravnica_Allegiance/Breeding_Pool)中提取数据。

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.mtgprice.com/sets/Ravnica_Allegiance/Breeding_Pool')

我找到的唯一引用是在Java脚本代码中:(https://www.mtgprice.com/taneLayout/js/Charts.js)(https://www.mtgprice.com/taneLayout/js/demos/charts/line.js)。

$(function () {

var d1 = [3.0, 3.0, 4.2, 4.4, 1.3, 2.9, 2.8, 1.9, 2.1, 3.4, 6.8, 8.1, 7.5, 7.1, 7.5, 9.5, 12.1, 12.4, 10.9, 10.4, 10.9, 9.1, 9.4, 10.5],
        d2 = [ 0.6, 1.2, 1.7, 0.7, 2.9, 4.1, 2.6, 3.7, 3.9, 1.7, 2.3, 3.0, 3.3, 4.8, 5.0, 4.8, 5.0, 3.2, 2.0, 2.4, 2.7, 3.5, 3.2, 2.8];         
            
var dt1 = [], 
        dt2 = [], 
        st = new Date(2012, 8, 6).getTime();

for( var i = 0; i < d2.length; i++ ) {
    dt1.push([st + i * 3600000, parseFloat( (d1[i]).toFixed( 3 ) )]);
    dt2.push([st + i * 3600000, parseFloat( (d2[i]).toFixed( 3 ) )]);
}

var data = [{ 
    data: dt1,
    label: 'Revenue'        
 }, { 
    data: dt2, 
    label: 'Expenses', 
    points: { show: false }, 
    lines: { lineWidth: 2, fill: false }        
 }];

Charts.line ( '#line-chart', data);
});

我想得到一个表或与日期和价格,从不同的卖家,你可以从屏幕的右侧选择的相框。
谢谢你的帮助

kxe2p93d

kxe2p93d1#

您可以在Developer Console中看到包含图表中所有数据的JS对象。打开控制台并输入“结果”。
使用driver.execute_script获取该对象。

driver.execute_script('return results')

价格与unix时间戳相关联。将其转换为datetime

import datetime

timestamp  = 1563092869548
timestamp = timestamp / 1000 # 2019-07-14 08:27:49.548000
date = datetime.datetime.utcfromtimestamp(timestamp)

相关问题