我正在尝试使用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) ------^
显然它不喜欢这些角色。我在这里有一个简单的工作吗?
答案 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