【发布时间】:2019-03-30 17:58:52
【问题描述】:
我从多个网站抓取了一些 URL,并将它们放在一个包含 145 个元素的大列表中(对于每个被抓取的网站)。每个元素在称为 X[[i]] 的列中有 90-300 行。接下来我想在列表中的 URL 中搜索“议程”一词并使用这些 URL 下载文档,但我无法执行此操作。
我目前的代码是:
## scrape urls
url_base <- "https://amsterdam.raadsinformatie.nl/sitemap/meetings/201%d"
map_df(7:8, function(i){
page <- read_html(sprintf(url_base, i))
data_frame(urls = html_nodes(page, "a") %>% html_attr("href") )
}) -> urls
rcverg17_18 <- data.frame(urls[grep("raadscomm", urls$urls), ])
## clean data
rcverg17_18v2 <- sub(" .*", "", rcverg17_18$urls)
## scrape urls from websites
list <- map(rcverg17_18v2, function(url) {
url <- glue("https://amsterdam.raadsinformatie.nl{url}")
read_html(url) %>%
html_nodes("a") %>%
html_attr("href")
})
list2 <- lapply(list, as.data.frame)
这给出了一个看起来像这样的大列表:
list2
list2 list[145] List of length 145
[[1]] list[239 x 1] (S3: dataframe) A data.frame with 239 rows and 1 column
[[2]] list[139 x 1] (S3: dataframe) A data.frame with 139 rows and 1 column
[[3]] list[185 x 1] (S3: dataframe) A data.frame with 186 rows and 1 column
[[4]] list[170 x 1] (S3: dataframe) A data.frame with 170 rows and 1 column
[[.]] ...
[[.]] ...
[[.]] ...
一个元素包含不同的信息,例如:
list2[[1]]
X[[i]]
1 #zoeken
2 #agenda_container
3 #media_wrapper
4 ...
还有包含空格的 URL,例如:
104 https://amsterdam.raadsinformatie.nl/document/4851596/1/ID_17-01-11_Termijnagenda_Verkeer_en_Vervoer
我想要的是搜索其 URL 名称中包含“议程”的 URL,并使用这些 URL 下载文件。我知道我必须使用 download.file() 函数来下载文件,但我不知道具体如何。另外我不知道如何在这种类型的数据框(带有元素)中搜索 URL。谁能帮我完成代码?
请注意,仍然必须删除单元格中的空格才能下载文件。
【问题讨论】:
标签: r url web-scraping element screen-scraping