我正在尝试在 R 中抓取《华尔街日报》大学排名的所有 400 个条目。我在 R 中使用 rvest
包,如下所示:
library(rvest)
link <- "https://www.wsj.com/rankings/college-rankings/best-colleges-2024"
wsj <- read_html(link)
在此之后,我很迷失下一步该做什么。该页面的 HTML 源代码非常困惑且难以筛选。我觉得我已经取得了一些进步:
wsj %>% html_elements("section") %>% html_element("p")
但我对此很陌生,所以我可能没有走上正确的道路。任何指示将不胜感激。
最佳答案
网页上的所有数据都以 JSON 数据的形式存储在脚本节点中。搜索网页后,这里是快速解决方案。
一旦检索到脚本节点中的数据,将其转换为文本,然后将 JSON 数据解析为列表。人们需要通读该列表才能识别正确的列表结构。
library(rvest)
link <- "https://www.wsj.com/rankings/college-rankings/best-colleges-2024"
wsj <- read_html(link)
#Retrieve the script node whose id=__NEXT_DATA__
#convert to text
#then parse with the jsonlite library.
webdata <- wsj %>% html_elements("script[id='__NEXT_DATA__']") %>%
html_text() %>% jsonlite::fromJSON()
#looking through the output the college rank data is stored here.
collegedata <- webdata$props$pageProps$collegeRankingsData
head(collegedata)
tail(collegedata)
关于html - 如何使用 R 从《华尔街日报》中网络抓取以下大学排名数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77262487/