【问题标题】:Extracting data from interactive line chart - svg path - python 2.7从交互式折线图中提取数据 - svg 路径 - python 2.7
【发布时间】:2015-10-21 00:25:57
【问题描述】:

我想获取情绪值折线图上描述的数据: 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 的字符串甚至不能正确地表示图形(我找不到正确的代码)。

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

【问题讨论】:

    标签: javascript python svg graph beautifulsoup


    【解决方案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 等)。

    【讨论】:

    • 感谢您的代码!我正在获取情绪值图表上描述的数据(值)。
    • 变量是一个包含多个对象的数组(如果我理解正确的话)。如何获得以{'data': [[1437694834500.0, 2.6394052044609664], 开头的第三个“数据”对象?谢谢!
    • 非常感谢您的回答!我现在可以看到变量了。
    猜你喜欢
    • 2015-04-24
    • 2022-07-05
    • 2016-12-02
    • 1970-01-01
    • 2023-02-06
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多