html - 如何使用 R 从《华尔街日报》中网络抓取以下大学排名数据?

标签 html r web-scraping

我正在尝试在 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/

相关文章:

r - nlme 适合 : vcov versus summary

python - 在 Python 中使用某些文本抓取 HTML 表格

javascript - python Selenium : Click on a specific Dropdown containing Java

python - 无法点击 map 上的标志

javascript - 在网站顶部放置一个 HTML 按钮?

html - 使用文本溢出 : ellipses in an HTML table

r - 沿一个方向偏移多段线

excel - 从 Excel 中 Hook R - DCOM? R 添加到 Excel 中吗?

php - JavaScript 表单验证 - 函数未在提交时运行。

javascript - 如何在加载 HTML 元素后立即修改它?