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

时间:2015-07-29 20:20:06

标签: javascript python svg graph beautifulsoup

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

寻找我经历过的答案     Web scraping data from an interactive chart似乎与我的情况非常相似。

也经过:     Scraping graph data from a website using Python

这是我的最后一次尝试:

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的字符串甚至不能正确表示图形(我找不到合适的代码)。

如何提取值? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

很难确切知道您的整体情况,但您得到的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等)。