我想提取的影响力排名表整齐与列排名,大学名称,可持续发展目标1,可持续发展目标2,可持续发展目标3,可持续发展目标4,和总体得分,国家。以下是我尝试的代码。
library(tidyverse)
library(rvest)
link <- "https://www.timeshighereducation.com/impactrankings"
selector <- "#block-system-main > div > div.container"
webpage <- read_html(link)
data <- html_nodes(webpage, selector)
content <- html_text(data)
content
字符串
上面的代码没有达到我的目的。我试图从网页上的大学影响力排名表中提取数据,并将其组织成一个整洁的格式。
2条答案
按热度按时间brvekthn1#
rvest问题的一般提示适用:在使用rvest之前,尝试temporarily blocking Javascript in your browser并重新加载页面。如果您想要的信息没有出现,则信息很可能是用JavaScript加载的,因此rvest不是该工作的工具。
回退选项包括:
在这种情况下,我们是幸运的:
x1c 0d1x的数据
我们想要的文件是以
world_impact_rankings
开头的文件。我们可以通过以下方式获得URL:1.在我们的浏览器中打开网页(截图是Chrome的,但与其他浏览器相同)
1.右键点击页面的任何地方,打开“检查”。应该会弹出一些东西,可能在浏览器窗口的底部
1.在这个新的区域(检查器)中,应该有一个网络标签在它的顶部,就像我的截图一样。
1.根据我的经验,你总是需要重新加载页面,让Network选项卡开始列出网络请求,所以重新加载页面。你现在应该看到很多请求被记录下来。
1.通过使用左上角的过滤器搜索框过滤请求,只过滤带有JSON文件的请求
1.找到您要查找的请求,右键单击它>复制>复制链接地址(如果您使用Firefox,它可能会说复制URL,这都是一样的)
现在我们有了URL,我们可以使用JSONlite将其加载到R中:
字符串
JSON文件包括四组不同的数据:“subjects”,它看起来像是一个命名的主题列表及其相应的代码,“locations”(每个国家的某种id),“pillars”(可能是内部模型数据)和“data”,它是其他所有内容,以及您正在寻找的数据。
型
输出量:
型
上面的排名只是为了整体排名。为了其他的排名,因为只有四个其他的排名,很容易通过重复上面的过程来获得这些排名。如果你在每个SDG上都这样做,那么我建议自动化这个过程(URL是在网站上的一些JSON中找到的,所以你可以抓取URL(例如,像margusl的答案),然后重复上面的过程)。
一个注意:你的问题-你说:
我想这是为了一项任务吧?如果是的话,你可能想和你的导师谈谈,问他们是否理解整洁的数据实际上意味着什么,因为他们所要求的,像SDG数字这样的信息存储在列的名称中并不是这样。整理这些数据意味着保持数据的长度,并添加一个SDG数字列,上面的数据是“总体”,还有其他东西的号码
js5cn81o2#
实际的表数据以JSON的形式提供,而JSON又包含了SGD排名和分数的HTML片段。我们可以首先从页面源中提取JSON的URL,然后解析HTML来提取SGD数据:
字符串
前10行的结果帧:
型
创建于2023-11-06附带reprex v2.0.2