使用 R 语言爬取 JS 对象:爬取和讯网 A 股上市公司基本信息表和社会责任详细数据(社会责任部分的爬取代码已经失效)

由于和讯网已经不在公布社会责任数据,该课程中社会责任的爬取代码已经失效。

在之前的课程中我们遇到了很多关于 JSON 格式的数据爬取方法,主要是用 jsonlite 包的 fromJSON() 函数,今天我们将讲解另外一种类型数据的爬取和处理:JavaScript 对象。

JSON 与 JS 对象的关系

关于 JSON 与 JS 对象的关系,百度百科里面给出了一个比较:

var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

对于 JSON 字符串,我们通常使用 jsonlite 包的 fromJSON() 函数解析:

library(tidyverse)
library(jsonlite)
fromJSON('{"a": "Hello", "b": "World"}') %>%
as_tibble()

而 JS 对象用这种方法处理就会报错:

# 报错的结果
fromJSON("{a: 'Hello', b: 'World'}") %>%
as_tibble()

这个时候我们就需要其他的方法了,V8 包:

library(V8)
ct <- v8()
ct$eval("var obj = {a: 'Hello', b: 'World'};")
ct$get("obj") %>%
as_tibble()

这个就是我们处理 JS 对象的方法,下面我们再在实际案例中操作下。

更多内容欢迎加入课程学习!

点击这里跳转到 RStata 短书平台获取附件:使用 R 语言爬取 JS 对象:爬取和讯网 A 股上市公司基本信息表和社会责任详细数据(社会责任部分的爬取代码已经失效)

评论