2017-10-10 29 views
1

jsonliteパッケージを使用して、次のJSONデータベースをRに読み込もうとしています。jsonファイルをインターネットからRに読み込む -</html>行の問題

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

明らかに、それはこれらの文字が好きではありません。これを行う

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

は、次のエラーがスローされます。ここで私は行方不明の簡単な作業はありますか?

+2

これは適切なJSONファイルではありません。 JSONのようなデータを含むHTMLファイルです。私は誰かがこのようにデータをサーバー化する理由を知らないので、間違いのようです。 – MrFlick

+0

@MrFlick wow。大丈夫、これは今より多くの意味があります。カスタムデータベースを構築する生物学者、これは時々起こる.... – colin

答えて

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 
関連する問題