一.日常扯淡

这里给大家介绍一个,个人觉得非常好的图片网站:https://unsplash.com/

这个网站里的图片全是可以免费下载的,最重要的是,它的图片不仅精美而且图片质量超高!所以,你只的拥有。

既然可以免费下载那为什么还要用爬虫呢?这个嘛,确实不需要,  =。=   就当我闲的蛋疼吧。

二.代码实现

首先,这是一个ajax的网站,所以,我们打开火狐浏览器,打开上方网址,进入网站后依次点击F12,网络,XHR,这时刷新下网页,就能看见如图的样子,这就是存放图片信息的json文件了

然而事实上,这还不是我们需要的链接,这个链接长这样:https://unsplash.com/napi/photos?page=2&per_page=2&order_by=latest

当我们将网页往下翻时,会出现这样的链接:https://unsplash.com/napi/photos?page=3&per_page=12&order_by=latest

二者区别在于后者page是从3开始的,我试了下,page=1也是有内容的;第二个区别在后者的per_page=12,

打开链接,查看json文件,发现无损的原图放在urls的raw下

好了,分析完毕,进入代码实操。

data = json.loads(requests.get(url,headers=get_user_hearder()).text)

首先获得我们需要的json文件

然后进入下载

def download_images(data,path):image_list=[]image_id=[]for i in range(0,len(data)):image_url=data[i]['urls']['raw']image_list.append(image_url)name=data[i]['id']image_id.append(name)for i in range(0,len(image_list)):auto_down(image_list[i],path + str(image_id[i])+'.jpg'print('第' + str(i) + '个图片下载完成')

我们在下图片时经常会遇到下载失败的情况,其中有种情况是出现urllib.ContentTooShortError错误,原因是文件下载不完全导致的错误,为防止图片下载失败,我用了一个大神的自动下载方法(https://blog.csdn.net/jclian91/article/details/77513289),当下载异常时,自动重新下载,超时会跳出循环。

def auto_down(url,filename):socket.setdefaulttimeout(30)try:urllib.request.urlretrieve(url, filename)except socket.timeout:count = 1while count <= 5:try:urllib.request.urlretrieve(url, filename)breakexcept socket.timeout:err_info = 'Reloading for %d time' % count if count == 1 else 'Reloading for %d times' % countprint(err_info)count += 1if count > 5:print("downloading picture failed!")

好了,最后输入以下开始下载的页号、停止下载的页号和图片保存的路径就可以跑了

def main(start,end,path):for i in range(start,end):url='https://unsplash.com/napi/photos?page='+str(i)+'&per_page=12&order_by=latest'data=getdata(url)download_images(data,path)print('第'+str(i)+'页下载完成')

最后的最后,放两张我下载的美图吧

 

额,原图有些大,我缩小了下。

注:原创,转载请注明出处。文中图片来自https://unsplash.com

图片爬虫——unsplash爬虫相关推荐

  1. Node.js meitulu图片批量下载爬虫1.051

    原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...

  2. 【pyhon】nvshens图片批量下载爬虫1.01

    # nvshens图片批量下载爬虫1.01 # 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕 from bs4 import BeautifulSoup ...

  3. 一图带你了解爬虫 简单爬虫,爬取各种图片,CNN的天堂,附带代码

    什么是爬虫? 爬虫的结构: 为什要爬虫? 在现在社会当中,模型基本上都可以从一些途径下载得到(例如:码云,github等等),但是有了模型没有数据怎么办呢?这时候就需要有大量的数据,模型一般可以下载, ...

  4. Python爬虫 | Python爬虫获取女友图片

    Python爬虫 | Python爬虫获取女友图片 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生 ...

  5. 图片下载器爬虫 ItemLoader

    思路 http://www.meizitu.com/a/more_1.html 图片下载器爬虫 1.使用到的技术:scrapy ,requests(下载图片),ItemLoader 2.项目的创建:s ...

  6. python爬虫抓收费图片_简单的抓取淘宝图片的Python爬虫

    写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品. 从网页http://mm.taobao.com/json/request_top_list.htm?type ...

  7. python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)

    什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...

  8. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

  9. 饱暖思淫欲之美女图片的Python爬虫实例(二)

    美女图片的Python爬虫实例:面向服务器版 ==该爬虫面向成年人且有一定的自控能力(涉及部分性感图片,仅用于爬虫实例研究)== 前言 初始教程 存在问题 解决思路 目标 实现步骤 硬件配置 服务器信 ...

最新文章

  1. 学生管理系统(C语言版)
  2. python 浏览器显示本地文件夹_从浏览器中打开本地文件文件夹
  3. SpringMVC中IOC容器启动
  4. Cookie禁用了,Session还能用吗?
  5. 红橙Darren视频笔记 仿QQ侧滑效果
  6. 刷新存储器的容量单位是什么_什么是PLC?PLC的选型原则是什么?
  7. 如何用计算机制作公式,常用的那些软件能做公式编辑器
  8. C程序设计语言(2)文摘
  9. Java ListIterator 与 Iterator 异同
  10. linux内核循环,循环缓冲区(参考linux内核Kfifo)
  11. 单片机用c语言怎么把i/o数据显示到lcd1602上,单片机lcd1602程序,通用型51单片机lcd1602驱动代码...
  12. 实验01 使用网络协议分析仪Wireshark
  13. 国家虚拟仿真实验教学项目共享平台(实验空间)PHP SDK
  14. 采购经理人指数(PMI)
  15. 中文汉字错别字纠错方法
  16. ardupiolt AP_AHRS库类的分析(一)AP_AHRS_NavEKF
  17. 用Java语言定义一个整数定义的数组,求奇数个数和偶数个数。
  18. 操作系统——精髓与设计原理(第九版)
  19. 钱,才是成年人活着的最大底气
  20. 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

热门文章

  1. 在fluent计算时如何设置非稳态时的时间步长
  2. 那些不用写代码也能做游戏的工具
  3. 无线路由器服务器密码忘记了怎么办,忘了路由器密码怎么进行ip设置
  4. The 2014 ACM-ICPC Asia Anshan Regional Contest
  5. 如何在Android/鸿蒙上安装XAPK文件
  6. 学3D建模能作为副业吗?
  7. 复习提醒系统——项目汇报
  8. 快速配置 Sign In with Apple
  9. dy是怎么算收益的?武汉新时标文化传媒
  10. 细粒度图像分析论文汇总