使用rvest无法使用网页废料内容

时间:2017-05-04 02:33:58

标签: html r web-scraping rvest

我希望网页抓取每个层次结构下的所有代码和代码,如本网站左侧面板所示,使用R package rvest。

URL-- http://apps.who.int/classifications/icd10/browse/2016/en/

首先,我尝试了这段代码 -

url<-"http://apps.who.int/classifications/icd10/browse/2016/en/"
src<-read_html(url)
ATC<-src%>%html_node("a.ygtvlabel")%>%html_text

a.ygtvlbel是我在将鼠标悬停在网页上的文字时看到的类。

然而它只返回NA_character。 我看到页面的html源代码并不直接包含这些代码(寄生虫病),而是它可能对所有内容都有一个href。

如何抓取这样的页面。请建议。

1 个答案:

答案 0 :(得分:1)

与许多此类页面一样,此页面对包含数据的json文件进行后台请求。这可以通过使用浏览器调试工具并查看网络请求来发现。使用评论中提到的API是一个更好的选择

library(httr)
library(jsonlite)

## original url<-"http://apps.who.int/classifications/icd10/browse/2016/en/"

json_url <- "http://apps.who.int/classifications/icd10/browse/2016/en/JsonGetRootConcepts?useHtml=false"
json_data <- rawToChar(GET(json_url)$content)

categories <- fromJSON(json_data)
categories$label
# [1] "I Certain infectious and parasitic diseases"                                                            
# [2] "II Neoplasms"                                                                                           
# [3] "III Diseases of the blood and blood-forming organs and certain disorders involving the immune mechanism"
# [4] "IV Endocrine, nutritional and metabolic diseases"                                                       
# gories$label