无法抓取HTML表RVest

时间:2019-01-06 21:33:24

标签: css xpath web-scraping rvest

尝试抓取https://www.cefconnect.com/closed-end-funds-daily-pricing 使用rvest进入R数据帧。继续尝试各种CSS和XPath选择器,但无法收集主数据表。

使用'table','tbody','td'和'tr xpath选择器没有成功。两列为超链接,其余为静态文本。谢谢!

URL <- 'https://www.cefconnect.com/closed-end-funds-daily-pricing'
html <- read_html(URL)

html2 <- html %>%
html_nodes(xpath = '//table') %>% 
html_nodes(xpath = '//td/a[1]/text()') %>%
html_text()
html3 <- as.data.frame(html2)

1 个答案:

答案 0 :(得分:0)

尝试分析在浏览器中加载网站时处理的请求。这可以通过在“浏览器”中浏览以下内容来完成。

设置>>更多工具>>开发人员工具(快捷方式:Ctrl + Shift + I)

执行此操作时,您可以看到以下请求之一 https://www.cefconnect.com/api/v3/DailyPricing?props=Ticker,Name,DistributionRateNAV,LastUpdated,Discount,DistributionRatePrice,ReturnOnNAV,CategoryId,CategoryName,IsManagedDistribution,Price,PriceChange,NAV,NAVPublished,Cusip/&_=1546832481302

如果单击上面的链接,您将看到表中以JSON格式显示的数据。这就是您需要转换为数据帧的方式。

url<-"https://www.cefconnect.com/api/v3/DailyPricing?props=Ticker,Name,DistributionRateNAV,LastUpdated,Discount,DistributionRatePrice,ReturnOnNAV,CategoryId,CategoryName,IsManagedDistribution,Price,PriceChange,NAV,NAVPublished,Cusip/&_=1546832481302"


library(rvest)
page<-html_session(url)
json<-readBin(page$response$content, what="json")

library(jsonlite)
df<-fromJSON(json)