首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:使用rvest下载镜像

R:使用rvest下载镜像
EN

Stack Overflow用户
提问于 2016-03-24 22:19:39
回答 2查看 11K关注 0票数 10

我正在尝试通过R从安全站点下载png镜像。

为了访问这个安全的站点,我使用了Rvest,它工作得很好。

到目前为止,我已经提取了png图像的URL。

如何使用rvest下载此链接的图像?

rvest函数外部的函数由于没有权限而返回错误。

当前尝试

代码语言:javascript
复制
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'

我在url上尝试了readPNGdownload.file,由于没有从经过认证的安全站点下载的权限,这两种方法都失败了(错误: 403),这就是为什么我首先使用rvest。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-24 23:46:02

下面是一个将R徽标下载到当前目录的示例。

代码语言:javascript
复制
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提出的使用会话的建议肯定是必需的。试试这个:

代码语言:javascript
复制
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))
票数 12
EN

Stack Overflow用户

发布于 2016-03-25 00:07:46

请尝试下面的示例:

代码语言:javascript
复制
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")

您现在有了"test.jpg“,如图所示:

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36202414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档