前提
Rを使ったWebスクレイピングで下記1-2を実現したいのですが、今回は下記1に絞った形での投稿となります。なおスクレイピングの対象ページは動的な認証ページを経ないとアクセスができないため、RSelenium経由でデータを取得する方法を取っています。
実現したいこと
- 特定のhtmlページに記載されているjson型のテキストデータをパースし
- このjson型のデータをデータフレームに格納したい
発生している問題
RSeleniumを使って該当ページに辿りつき、ページソースの取得はできているのですが、ページ内で表示されているjsonをfromJSONでうまくパースできず、どのようアプローチをすべきか分かりかねています。
該当ページの表示内容
該当ページでは以下の内容が表示されています。
[{"id":1,"name":"family","middleCategories":[{"id":1,"name":"mother","scenarios":[{"id":105,"name":"son"},{"id":106,"name":"daughter"}]}..(略)..]}]}]
該当のページソース
以下がchromeの開発者ツールで確認した対象ページの大構造です。
<html> <script></script> <head></head> <body></body> </html>
また値は改変していますが、上記bodyタグの中身は以下のように見えています。
<body><pre style=\"word-wrap: break-word; white-space: pre-wrap;\">[{\"id\":1,\"name\":\"family\",\"middleCategories\":[{\"id\":1,\"name\":\"mother\",\"scenarios\":[{\"id\":105,\"name\":\"son\"},{\"id\":106,\"name\":\"daughter\"}]}..(略)..</pre></body>
該当のソースコード
以下のコードを試しました。
R
1#コンテンツを取得(ここに至るまでログイン、遷移の操作は省略) 2res <- remDr$getPageSource()[[1]] 3 4#pageコンテツが取得できているか確認 5res 6 7#json型のコンテンツのように見えるのでjsonとしてパース 8fromJSON(res)
resの出力結果
下記の通りページのコンテンツの取得は問題なくできているように見えています。
[1] "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body><pre style=\"word-wrap: break-word; white-space: pre-wrap;\">[{\"id\":1,\"name\":\"family\",\"middleCategories\":[{\"id\":1,\"name\":\"mother\",\"scenarios\":[{\"id\":105,\"name\":\"son\"},{\"id\":106,\"name\":\"daughter\"}]}..(略)..</pre></body></html>"
### エラーメッセージ - fromJSON(res)の結果
上述したコードを実行したところ以下のようなエラーメッセージが出る状況です。
R
1Error: lexical error: invalid char in json text. 2 <html xmlns="http://www.w3.org/ 3 (right here) ------^
補足情報(FW/ツールのバージョンなど)
R (3.5.0)
Rstudio (1.1.442)
library(RSelenium)
library(RJSONIO)
library(jsonlite)
library(rvest)
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。