从互联网上读取一个json文件到R - 线条麻烦

时间:2017-10-10 20:52:31

标签: json r

我正在尝试使用jsonlite包将以下JSON数据库读入R中。

library(jsonlite)
db <- fromJSON("http://www.stbates.org/funguild_db.php", flatten=TRUE)

执行此操作会引发以下错误:

Error in parse_con(txt, bigint_as_char) : 
  lexical error: invalid char in json text.
                                       <html> <head> <title>funguild_d
                     (right here) ------^

显然它不喜欢这些角色。我在这里有一个简单的工作吗?

1 个答案:

答案 0 :(得分:2)

@MrFlick是正确的,因为它不是提供数据的好方法。但一如既往,有办法解决它。在这里,我使用rvest来抓取整个页面,然后gsub去除第一个字符串,这恰好是url的最后一部分(减去.php扩展名)。

url <- "http://www.stbates.org/funguild_db.php"

library(rvest)
library(jsonlite)

js <- url %>% 
    read_html() %>%
    html_text() 

js <- jsonlite::fromJSON(gsub("funguild_db", "", js))

head(js[, 1:5])

#                       $oid                  taxon taxonomicLevel trophicMode          guild
# 1 58f450f1791497fd28ebfccc Xanthomonas campestris             20  Pathotroph Plant Pathogen
# 2 58f450f1791497fd28ebfccd  Xanthomonas juglandis             20  Pathotroph Plant Pathogen
# 3 58f450f1791497fd28ebfcce         Xanthoparmelia             13 Symbiotroph     Lichenized
# 4 58f450f1791497fd28ebfccf           Xanthopeltis             13 Symbiotroph     Lichenized
# 5 58f450f1791497fd28ebfcd0            Xanthopsora             13 Symbiotroph     Lichenized
# 6 58f450f1791497fd28ebfcd1         Xanthopsorella             13 Symbiotroph     Lichenized