从 R 中的 HTML 抓取一个 Table-Like 索引
Scrape a Table-Like Index from HTML in R
我目前正在努力从 ICPSR 的 PATH 调查数据中抓取 table at this website,其中包含变量 ID、问题文本、变量类型和原始数据集。我的最终目标是通过在 R 中抓取此信息来创建变量 ID 及其相应问题文本的电子表格清单矩阵,但我无法让它工作。 简而言之,我的目标是基本上将上面 url 处显示的 table 放入电子表格中。
我已经尝试使用 rvest
、XML
和许多其他 packages/strategies(read.table
、htmltab
、htmltable
,等等...),但如果你愿意的话,底层的 table 似乎不是一个类似于 table 的“幕后”对象。因此,我正在努力寻找一个 resource/previous 问题来帮助抓取 table ,它在结构上不一定是 table,但在视觉上肯定是 table。
如有任何帮助,我们将不胜感激。谢谢!
我认为大部分内容都位于脚本标记内,在呈现页面期间通过 JavaScript 在浏览器中从中动态提取内容。
您可以正则表达式输出适当的 JavaScript 对象并处理为 json。但是,考虑到 response$docs 下 returned 列表的可变性,您将需要花一些时间研究 json 并确定您想要什么,以及如何组织输出,然后编写应用于列表的自定义函数 return 可能是结果数据框。
提取文档列表的方法如下:
library(rvest)
library(stringr)
library(magrittr)
library(jsonlite)
s <- read_html('https://www.icpsr.umich.edu/web/NAHDAP/search/variables?start=0&sort=STUDYID asc,DATASETID asc,STARTPOS asc&SERIESFULL_FACET_Q=606|Population Assessment of Tobacco and Health (PATH) Study Series&DATASETTITLE_FACET=Wave 4: Youth / Parent Questionnaire Data&EXTERNAL_FLAG=1&ARCHIVE=NAHDAP&rows=1000#') %>%
html_text()
r <- stringr::str_match(s, 'searchResults : (\{.*\}), searchConfig')
data <- jsonlite::parse_json(r[1,2])
docs <- data$response$docs
这是列表中的示例项目(考虑到列表中项目的可变性):
我目前正在努力从 ICPSR 的 PATH 调查数据中抓取 table at this website,其中包含变量 ID、问题文本、变量类型和原始数据集。我的最终目标是通过在 R 中抓取此信息来创建变量 ID 及其相应问题文本的电子表格清单矩阵,但我无法让它工作。 简而言之,我的目标是基本上将上面 url 处显示的 table 放入电子表格中。
我已经尝试使用 rvest
、XML
和许多其他 packages/strategies(read.table
、htmltab
、htmltable
,等等...),但如果你愿意的话,底层的 table 似乎不是一个类似于 table 的“幕后”对象。因此,我正在努力寻找一个 resource/previous 问题来帮助抓取 table ,它在结构上不一定是 table,但在视觉上肯定是 table。
如有任何帮助,我们将不胜感激。谢谢!
我认为大部分内容都位于脚本标记内,在呈现页面期间通过 JavaScript 在浏览器中从中动态提取内容。
您可以正则表达式输出适当的 JavaScript 对象并处理为 json。但是,考虑到 response$docs 下 returned 列表的可变性,您将需要花一些时间研究 json 并确定您想要什么,以及如何组织输出,然后编写应用于列表的自定义函数 return 可能是结果数据框。
提取文档列表的方法如下:
library(rvest)
library(stringr)
library(magrittr)
library(jsonlite)
s <- read_html('https://www.icpsr.umich.edu/web/NAHDAP/search/variables?start=0&sort=STUDYID asc,DATASETID asc,STARTPOS asc&SERIESFULL_FACET_Q=606|Population Assessment of Tobacco and Health (PATH) Study Series&DATASETTITLE_FACET=Wave 4: Youth / Parent Questionnaire Data&EXTERNAL_FLAG=1&ARCHIVE=NAHDAP&rows=1000#') %>%
html_text()
r <- stringr::str_match(s, 'searchResults : (\{.*\}), searchConfig')
data <- jsonlite::parse_json(r[1,2])
docs <- data$response$docs
这是列表中的示例项目(考虑到列表中项目的可变性):