用R语言高效下载图片

2017 年 11 月 20 日 R语言中文社区 刘小芬

作者:刘小芬R语言中文社区专栏作者。知乎专栏:https://www.zhihu.com/people/liu-xiao-fen-10/columns


有时候无法避免需要上网下载一些图片,一开始都是复制-粘贴,或者是右键另存为,不仅效率低,而且单纯手工操作,容易遗漏。于是,就想到曾经用R语言爬取网站表格数据,思考是不是可以用R语言下载图片呢?


参考杜雨的文章进行自己的实践操作。选择的网站是 http://www.uisdc.com/22-stunning-free-photos-websites,这是PPT大神阿文推荐的下载高清图片的网址,想着既然要操作,就选择自己需要的图片吧~


具体代码:

install.packages("downloader")
library(rvest)
library(downloader)
library(dplyr)

由于downloader不属于R中的基础包,所以在运用之前需要下载安装包,其余几个在之前练习中已经安装好了。


接着随机选取一张图片,右键选择“检查”,在网页右侧会出现一个网页结构信息,同时定位到这张图片所在的位置,如图所示:

其中,“img”是指图片,“str”是指图片的地址。


而我们是需要下载全部的图片,所以还需要查看整体的网页结果,也就是说找出img所在的分区结构,我的查找方法就是不断的往上找,例如顺着前面的三角符号往上查找它的上一级,就是img所在的分区结构“div”,如图所示:

于是,写入代码:
url <- 'http://www.uisdc.com/22-stunning-free-photos-websites'
picture<- read_html(url)%>% html_nodes("div.entry-content")%>%html_nodes("img")%>%html_attr("src")

代码中“%>%”表示将左边赋值为右边,“url”是图片所在的网址,“div.entry-content”图片所在的分区结构位置,“img”意味着选择了图片信息,“src”是图片所在的地址。


查看前面十个图片地址信息:

> head(picture,10)
 [1] "http://image.uisdc.com/wp-content/uploads/2015/04/22-stunning-free-photos-websites-1.jpg"
 [2] "http://image.uisdc.com/wp-content/uploads/2015/04/fancycrave.jpg"                          [3] "http://image.uisdc.com/wp-content/uploads/2015/04/madeinmoments.png"                     
 [4] "http://image.uisdc.com/wp-content/uploads/2015/04/realistic-shots-photo.jpg"             
 [5] "http://image.uisdc.com/wp-content/uploads/2015/04/snapographic.jpg"                      
 [6] "http://image.uisdc.com/wp-content/uploads/2015/04/designerspics.jpg"                     
 [7] "http://image.uisdc.com/wp-content/uploads/2015/04/goodstockphotos.jpg"                   
 [8] "http://image.uisdc.com/wp-content/uploads/2015/04/stokpic.jpg"                           
 [9] "http://image.uisdc.com/wp-content/uploads/2015/04/freenaturestock.jpg"                   
[10] "http://image.uisdc.com/wp-content/uploads/2015/04/freemagebank.jpg"                      
> 

最后,利用for循环语句和downloader包下载图片:

for(i in 1:length(picture)) 
{
  download(picture[i],paste("F:/数据可视化/Image/picture",i,".jpg",sep = ""), mode = "wb")
} 

最后的成果:

补充一点,有时候用如下代码会爬取到一些无法的网址信息,也就是说不是我们需要的网址。

url <- 'http://www.uisdc.com/22-stunning-free-photos-websites'
picture<- read_html(url)%>% html_nodes("div.entry-content")%>%html_nodes("img")%>%html_attr("src")

这个时候我们可以用“stringr”这个包进行筛选所需的网址,例如:

right = "https"
picture<-grep(right, picture,value=TRUE)



公众号后台回复关键字即可学习

回复 R               R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 

登录查看更多
1

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
116+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
代码分享系列(1)之感知机【代码可下载】
机器学习算法与Python学习
4+阅读 · 2018年2月10日
用 Python 和 OpenCV 检测图片上的条形码
Python开发者
5+阅读 · 2018年1月20日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
[编程经验] CVPR2017论文全集下载代码脚本分享
机器学习和数学
9+阅读 · 2017年7月27日
已删除
Arxiv
32+阅读 · 2020年3月23日
Neural Architecture Optimization
Arxiv
8+阅读 · 2018年9月5日
Arxiv
6+阅读 · 2018年7月29日
Arxiv
3+阅读 · 2018年6月19日
Arxiv
12+阅读 · 2018年1月28日
Arxiv
7+阅读 · 2018年1月21日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
116+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
161+阅读 · 2020年3月4日
相关资讯
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
代码分享系列(1)之感知机【代码可下载】
机器学习算法与Python学习
4+阅读 · 2018年2月10日
用 Python 和 OpenCV 检测图片上的条形码
Python开发者
5+阅读 · 2018年1月20日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
[编程经验] CVPR2017论文全集下载代码脚本分享
机器学习和数学
9+阅读 · 2017年7月27日
相关论文
已删除
Arxiv
32+阅读 · 2020年3月23日
Neural Architecture Optimization
Arxiv
8+阅读 · 2018年9月5日
Arxiv
6+阅读 · 2018年7月29日
Arxiv
3+阅读 · 2018年6月19日
Arxiv
12+阅读 · 2018年1月28日
Arxiv
7+阅读 · 2018年1月21日
Top
微信扫码咨询专知VIP会员