从具有 至 列的向量列表中,循环应使用第一列中的 url,然后在第二列中的值的名称下存储缩略图
单一值和名称的解决方案可行;但循环遍历列表却不是
目标是将图像存储为:
名称1.jpg
名称2.jpg
名称3.jpg
名称4.jpg
list <- data.frame(
urls=c("url1", "url2", "url3", "url4"),
names=c("name1","name2","name3","name4")
)
# This works for a single Url and single name
page <- read_html(z)
thumbnail_url <- page %>% html_node("meta[property='og:image']") %>% html_attr("content")
thumbnail_id <- ("test.jpg")
download.file(thumbnail_url,thumbnail_id, mode = 'wb')
#尝试使用嵌套循环函数但没有成功
for (i in list$urls){
for(j in list$names){
page <- read_html(i)
thumbnail_url <- page %>% html_node("meta[property='og:image']") %>% html_attr("content")
thumbnail_id <- (paste(j,".jpg"))
download.file(thumbnail_url,thumbnail_id, mode = 'wb')
}
}
#使用 nrow 和 ncol 并没有帮助我获得正确的文件名
for (row in 1:nrow(list$urls)) {
for (col in 1:ncol(list$names)) {
page <- read_html(row)
thumbnail_url <- page %>% html_node("meta[property='og:image']") %>% html_attr("content")
thumbnail_id <- (paste(col,".jpg"))
download.file(thumbnail_url,thumbnail_id, mode = 'wb')
}
}
您只需使用循环计数器作为列表中
url
和 names
元素的索引即可:
for (i in 1:nrow(list)) {
page <- read_html(list$urls[i])
thumbnail_url <- page %>% html_node("meta[property='og:image']") %>% html_attr("content")
thumbnail_id <- (paste(list$names[i],".jpg"))
download.file(thumbnail_url,thumbnail_id, mode = 'wb')
}