【问题标题】:Unable to web scrape contents using rvest无法使用 rvest 抓取网页内容
【发布时间】:2017-10-02 01:03:33
【问题描述】:

我希望使用 R 包 rvest 从本网站的左侧面板中看到所有代码和每个层次结构下的代码。

网址-- 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。

我该如何抓取这样的页面。请多多指教。

【问题讨论】:

  • b/c 使用实际的 API 会很糟糕吗? cran.r-project.org/web/packages/WHO/index.html
  • 谢谢@hrbrmstr。 API实际上给出了一个新的思路。根据提示,我使用 R 包 - icd 并从包定义的变量中获取主要章节和子章节,因为我正在专门寻找 ICD10 代码。无法获得最低级别的代码(我的意思是 A00.0 霍乱弧菌,霍乱弧菌,霍乱生物型)。但是我想知道如果我混淆使用API​​来打包,会探索更多。
  • 'icd' 目前仅限于美国 ICD-9-CM 和 ICD-10-CM,它们大多是相应 WHO 计划的超集。然而,WHO 有一些领域更详细,特别是 HIV,在美国版本中更为有限。令人惊讶的是,世卫组织对其 ICD-9 和 ICD-10 版本拥有版权,因此目前无法作为“icd”或“icd.data”软件包的一部分进行分发。
  • 不幸的是,WHO 软件包处理的是 WHO 数据文件,而不是分类。如果您以电子方式签署协议并且不重新分发,则可以从 WHO 获得 WHO ICD 代码的机器可读定义。

标签: html r web-scraping rvest


【解决方案1】:

与许多此类页面一样,此页面会在后台请求包含数据的 json 文件。这可以通过使用浏览器调试工具并查看网络请求来发现。使用 cmets 中提到的 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

【讨论】:

  • 谢谢@epi99。同意,我从 R 包中获取了部分数据。但是,如果它可以帮助我获取页面上的所有内容,仍然想尝试您的代码。
  • content(RESULTOFGET, as="parsed") 无法在您的系统上运行?
猜你喜欢
  • 2020-07-18
  • 2019-02-17
  • 2020-04-24
  • 1970-01-01
  • 2017-09-11
  • 2019-10-11
  • 1970-01-01
相关资源
最近更新 更多