从交互式折线图中提取数据 - svg 路径 - python 2.7

Extracting data from interactive line chart - svg path - python 2.7

我想获取情绪值折线图上描绘的数据: http://sentdex.com/financial-analysis/?i=TWTR&tf=7d

寻找我经历过的答案 Web scraping data from an interactive chart 跟我的情况好像很像。

还经历了:

这是我最后一次尝试:

import re

svg_string = "M 364.5 53 L 364.5 171.35000000000002 M 364.5 184.5 L 364.5 302.85 M 364.5 184.5 L 364.5 302.85"

print repr(svg_string)

data = [map(float, xy.split(',')) for xy in re.split('[ML]', svg_string)[1:]]
print data

我至少面临 3 个问题: 第一个是 svg_string 的数据代表坐标与实际值,所以我不确定如何访问有趣的数据。

第二个是,即使我使用这段代码,我也会得到

 ValueError: invalid literal for float(): 364.5 53

最后,svg_string 的字符串甚至不能正确表示图形(我找不到正确的代码)。

如何提取值? 提前谢谢你。

很难确切地知道您总体上想要什么,但是您得到的 ValueError 是因为您的数据与您引用的其他问题不完全相同。你的数据中有空格,而另一个问题有逗号。

为了减轻 ValueError 的变化:

data = [map(float, xy.split(',')) for xy in re.split('[ML]', svg_string)[1:]]

至:

data = [map(float, xy.split()) for xy in re.split('[ML]', svg_string)[1:]]

希望这能让你进入下一步。

编辑:

好的,所以我再次查看了该页面,数据实际上只是在一个 js 变量中,您可以从响应中获取该变量。变量名称是 'series' 所以你要么需要自己做一些解析来获取数据,要么找到一个库来使用(例如 BeautifulSoup 等)。