Проблема соскоба HTML-таблицы Rvest - PullRequest
0 голосов
/ 07 января 2019

Пытается скрести 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 голосов
/ 07 января 2019

Попробуйте проанализировать запросы, которые обрабатываются при загрузке веб-сайта в браузере. Это можно сделать, выполнив следующие действия в Браузере Хром.

Настройки >> Дополнительные инструменты >> Инструменты разработчика (сочетание клавиш: 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)
...