首页 > 解决方案 > 使用 rvest 抓取并将 html 输出转换为数据框

问题描述

当在 R 中抓取孟买证券交易所网站以获取财务结果时,我得到了 html 代码。

read_html("https://api.bseindia.com/BseIndiaAPI/api/TabResults/w?scripcode=500470&tabtype=RESULTS") %>% 
    html_text()

但是我得到如下输出:

[1] "\"{\\\"col1\\\":\\\"(in Cr.)\\\",\\\"col2\\\":\\\"Sep-18\\\",\\\"col3\\\":\\\"Jun-18\\\",\\\"col4\\\":\\\"FY17-18\\\",\\\"resultinCr\\\":[{\\\"title\\\":\\\"Revenue\\\",\\\"v1\\\":\\\"17,902.04\\\",\\\"v2\\\":\\\"16,405.46\\\",\\\"v3\\\":\\\"60,519.37\\\"},....

我应该如何将这些数据提取到数据框中?

我尝试使用gsub从文本输出中提取数字和字符。但是反斜杠字符使它变得困难。表格格式应该是这样的:

表快照

标签: rweb-scrapinghtml-parsingrvest

解决方案


url<-"https://api.bseindia.com/BseIndiaAPI/api/TabResults/w?scripcode=500470&tabtype=RESULTS"
library(rvest)
page<-html_session(url)
json<-readBin(page$response$content, what="json")

library(jsonlite)
df<-fromJSON(json)
df<-fromJSON(df)

#Result in CR
df$resultinCr

#result in Million
df$resultinM

结果为 JSON 格式。使用 JSONLITE 包解析 JSON。


推荐阅读