从html源中提取JSON数据以用于R中的jsonlite

从html源中提取JSON数据以用于R中的jsonlite,json,r,Json,R,我有数据方面的背景,刚刚开始抓取,所以如果我的网络标准和语言不符合要求,请原谅我 我试图从我使用的网站的javascript组件中获取一些数据。查看页面源代码时,我实际上可以在JSON格式的javascript函数调用中看到我需要的数据。例如,它看起来有点像这样 <script type="text/javascript"> $(document).ready(function () { gameState = 4; atView.init

我有数据方面的背景,刚刚开始抓取,所以如果我的网络标准和语言不符合要求,请原谅我

我试图从我使用的网站的javascript组件中获取一些数据。查看页面源代码时,我实际上可以在JSON格式的javascript函数调用中看到我需要的数据。例如,它看起来有点像这样

<script type="text/javascript">
    $(document).ready(function () {
         gameState = 4;
         atView.init("/Data/FieldView/20152220150142207",{"a":[{"co":true,"col:"Red"}],"b":false,...)
         meLine.init([{"c":100,"b":true,...)
</script>

$(文档).ready(函数(){
配子状态=4;
init(“/Data/FieldView/20152220150142207,{”a:[{“co”:true,“col:”Red“}],“b”:false,…)
init([{“c”:100,“b”:true,…)
现在,我只需要meLine.init中的JSON数据。如果我只将JSON数据物理复制/粘贴到一个文件中,那么我就可以使用R中的jsonlite将其转换为我需要的数据


但是,我不想复制/粘贴多个页面,所以我需要一种只提取这些数据的方法,而将其他所有内容都放在后面。我最初的想法是将html源代码保存到R,转换为文本,然后尝试使用regex匹配“meLine.init”(“,但这方面我没有什么进展。有人能提供一些帮助吗?

通常我会使用XML和xpath来解析html页面,但在这种情况下(因为您知道您要查找的确切结构),您可能可以直接用一些正则表达式来完成(这通常不是一个好主意).不确定这是否能让你完全达到目标,但是

sub("[ ]+meLine.init\\((.+)\\)" , "\\1", 
    grep("meLine.init", readLines("file://test.html"), value=TRUE), 
    perl=TRUE)

将返回您正在查找的行,然后您可以使用
jsonlite
发挥您的魔力。方法是逐行阅读页面。grep the(希望如此)包含字符串
meLine.init
的单行,然后从中提取JSON字符串。替换
file://test.html
与您想要使用的URL一起使用

很好。就我所知,这确实完成了工作。感谢您的回复。我并没有对输出进行任何动态处理,只是存储并分析它,所以请跳令人遗憾的正则表达式问题对我影响不大。