用R解析svg

时间:2016-11-15 11:24:32

标签: r svg rvest

我希望将svg图表像净资产优势http://www.dotabuff.com/matches/2502387920一样转换成一个表格,其中一列中包含游戏分钟,而另一列中则有优势。

我从非常明显的代码行开始

library(rvest)
pic <- html("http://www.dotabuff.com/matches/2502387920") %>% html_node(xpath = "//svg")

然后我认为最有用的信息是属性d

pic %>% html_attr("d")

最后,我得到类似“m1234.8,2812.1,6.3004,3.6375,0,1.77-6.3004-3.6375z”的内容。我不知道如何解释它。

2 个答案:

答案 0 :(得分:1)

不是技术上的答案但是评论太大

那是因为您正在查看实际的SVG本地坐标。将这些转换回真实数据将是丑陋的(如果几乎不可能)。通常,我建议只从XHR请求中提取数据,但该网站不会对数据发出XHR请求。他们通过将编码数据嵌入到某些<a-entity> <a-box><a-animation/></a-box> </a-entity> 中来实际使用Highcharts数据混淆技术。这是您的数据:

<div>

(复制/粘贴到编辑器中以查看3个div,其中2个嵌入在第一个中)。

我无法找到有关此编码格式的文档(它不是简单的base64编码),并且看起来该网站在防止轻松数据抓取方面遇到了相当大的麻烦。您可能希望看看是否可以通过其API获取此数据。

答案 1 :(得分:1)

您可以在适当的jQuery选择器上使用highcharts插件。该 可以使用css x[i]

选择highcharts容器
[data-highcharts-chart='0']