【发布时间】:2022-01-16 19:59:12
【问题描述】:
我正在尝试基于跨多个 URL 的网络抓取创建数据集。
对于这个例子,我试图抓取名为h2.title 的节点,它是li.portal_list_item 的子节点。即,我希望创建 one 向量,其中包含节点的所有值(每个 URL 上为 500)。
我希望在循环或函数中执行此操作。
URL 的一个子集是,
test_urls <- c("https://projekter.aau.dk/projekter/da/studentthesis/search.html?showAdvanced=true&advanced=true&pageSize=500&page=1",
"https://projekter.aau.dk/projekter/da/studentthesis/search.html?showAdvanced=true&advanced=true&pageSize=500&page=2")
现在,我可以抓取节点并获得一个列表列表 - 500 个列表中的 2 个。但是,我想将 unlist 这个函数放入一个 1000 个长向量 inside 函数,所以我还可以使用该函数来创建数据集,因为我需要跨多个节点进行抓取 - 如果我可以简单地获得一个向量,我可以将它分配给数据集的一列。
library(rvest)
library(dplyr)
dfList <- lapply(test_urls, function(i) {
webpage <- read_html(i)
listitems <- html_nodes(webpage, "li.portal_list_item")
.GlobalEnv$titles <- listitems %>% html_nodes("h2.title") %>% html_text()
})
如果我尝试在我的函数中使用unlist,它根本不起作用,我凭直觉理解 - 但是,我似乎找不到解决方案。
任何帮助都非常非常感谢!
【问题讨论】:
标签: r loops screen-scraping rvest