我正在特灵使用R,特别是rvest
包,在https://www.topuniversities.com/university-rankings/university-subject-rankings/2023/arts-humanities?&tab=indicators中删除表。表是动态的。从我所读到的,我可以使用这个包和xpath来删除它。我使用Chrome的开发工具获得了xpath。
library(rvest)
webpage <- read_html("https://www.topuniversities.com/university-rankings/university-subject-rankings/2023/arts-humanities?&page=34&tab=indicators")
links <- html_nodes(webpage, xpath = "/html/body/div[1]/div/div/div[1]/div[2]/main/section/div/section/section/div/div/article/div/div/div[3]/div/div[1]/div/section/div[4]/div")
但这不起作用。我尝试的另一种方法是:
# include the installed library rvest
library(rvest)
# call the url
url <- "https://www.topuniversities.com/university-rankings/university-subject-rankings/2023/arts-humanities?&tab=indicators"
# get the data
page <- read_html(url)
# filter the required data using xpath
rows <- html_nodes(page, xpath = "/html/body/div[1]/div/div/div[1]/div[2]/main/section/div/section/section/div/div/article/div/div/div[3]/div/div[1]/div/section/div[4]/div") %>%
html_text()
# print
rows
谢谢你的帮助。
1条答案
按热度按时间hc8w905p1#
您似乎意识到表内容来自JSON,通常这意味着它是由javascript获取的,并且不包含在页面源代码中,即不可能仅通过使用在支持javascript的浏览器中工作的相同选择器和XPath来提取
rvest
表内容。将JSON重新排列成类似于页面上呈现的表格的东西,可以通过以下方式实现:
结果:
创建于2023-03-23带有reprex v2.0.2
请注意,API调用仅返回前15条记录,请随意调整URL中的
items_per_page
参数。