我希望网页抓取每个层次结构下的所有代码和代码,如本网站左侧面板所示,使用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。
如何抓取这样的页面。请建议。
答案 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