我试图通过R从安全网站下载png
图片。
要访问安全网站,我使用了Rvest
,效果很好。
到目前为止,我已经提取了png
图片的网址。
如何使用rvest下载此链接的图像?
rvest
函数之外的函数由于没有权限而返回错误。
library(rvest)
uastring <- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"
session <- html_session("https://url.png", user_agent(uastring))
form <- html_form(session)[[1]]
form <- set_values(form, username = "***", password="***", cookie_checkbox= TRUE)
session<-submit_form(session, form)
session2<-jump_to(session, "https://url.png")
## Status 200 using rvest, sucessfully accsessed page.
session
<session> https://url.png
Status: 200
Type: image/png
Size: 438935
## Using download.file returns status 403, page unable to open.
download.file("https://url.png", destfile = "t.png")
cannot open: HTTP status was '403 Forbidden'
在网址上尝试了readPNG
和download.file
,由于没有从经过身份验证的安全网站下载的权限而失败(错误:403),因此为什么我在第一次使用rvest的地方。
答案 0 :(得分:5)
以下是将R徽标下载到当前目录的一个示例。
library(rvest)
url <- "https://www.r-project.org"
imgsrc <- read_html(url) %>%
html_node(xpath = '//*/img') %>%
html_attr('src')
imgsrc
# [1] "/Rlogo.png"
# side-effect!
download.file(paste0(url, imgsrc), destfile = basename(imgsrc))
修改强>
由于涉及身份验证,因此当然需要Austin建议使用会话。试试这个:
library(rvest)
library(httr)
sess <- html_session(url)
imgsrc <- sess %>%
read_html() %>%
html_node(xpath = '//*/img') %>%
html_attr('src')
img <- jump_to(sess, paste0(url, imgsrc))
# side-effect!
writeBin(img$response$content, basename(imgsrc))
答案 1 :(得分:1)
请尝试以下示例:
library(rvest); library(dplyr)
url <- "http://www.calacademy.org/explore-science/new-discoveries-an-alaskan-butterfly-a-spider-physicist-and-more"
webpage <- html_session(url)
link.titles <- webpage %>% html_nodes("img")
img.url <- link.titles[13] %>% html_attr("src")
download.file(img.url, "test.jpg", mode = "wb")
希望这有帮助!