我想获得情绪价值折线图中描述的数据: 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的字符串甚至不能正确表示图形(我找不到合适的代码)。
如何提取值? 提前谢谢。
答案 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等)。