图片爬虫——unsplash爬虫
一.日常扯淡
这里给大家介绍一个,个人觉得非常好的图片网站: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爬虫相关推荐
- Node.js meitulu图片批量下载爬虫1.051
原有1.05版程序没有断点续传模式,现在在最近程序基础上改写一版1.051. //====================================================== // m ...
- 【pyhon】nvshens图片批量下载爬虫1.01
# nvshens图片批量下载爬虫1.01 # 原先版本在遇到网络故障时回下载不全,这回更改了模式使得下载不成就重新下载,直到全部下载完毕 from bs4 import BeautifulSoup ...
- 一图带你了解爬虫 简单爬虫,爬取各种图片,CNN的天堂,附带代码
什么是爬虫? 爬虫的结构: 为什要爬虫? 在现在社会当中,模型基本上都可以从一些途径下载得到(例如:码云,github等等),但是有了模型没有数据怎么办呢?这时候就需要有大量的数据,模型一般可以下载, ...
- Python爬虫 | Python爬虫获取女友图片
Python爬虫 | Python爬虫获取女友图片 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生 ...
- 图片下载器爬虫 ItemLoader
思路 http://www.meizitu.com/a/more_1.html 图片下载器爬虫 1.使用到的技术:scrapy ,requests(下载图片),ItemLoader 2.项目的创建:s ...
- python爬虫抓收费图片_简单的抓取淘宝图片的Python爬虫
写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品. 从网页http://mm.taobao.com/json/request_top_list.htm?type ...
- python爬虫爬取百度图片总结_爬虫篇| 爬取百度图片(一)
什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模 ...
- Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理
Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录
- 饱暖思淫欲之美女图片的Python爬虫实例(二)
美女图片的Python爬虫实例:面向服务器版 ==该爬虫面向成年人且有一定的自控能力(涉及部分性感图片,仅用于爬虫实例研究)== 前言 初始教程 存在问题 解决思路 目标 实现步骤 硬件配置 服务器信 ...
最新文章
- 学生管理系统(C语言版)
- python 浏览器显示本地文件夹_从浏览器中打开本地文件文件夹
- SpringMVC中IOC容器启动
- Cookie禁用了,Session还能用吗?
- 红橙Darren视频笔记 仿QQ侧滑效果
- 刷新存储器的容量单位是什么_什么是PLC?PLC的选型原则是什么?
- 如何用计算机制作公式,常用的那些软件能做公式编辑器
- C程序设计语言(2)文摘
- Java ListIterator 与 Iterator 异同
- linux内核循环,循环缓冲区(参考linux内核Kfifo)
- 单片机用c语言怎么把i/o数据显示到lcd1602上,单片机lcd1602程序,通用型51单片机lcd1602驱动代码...
- 实验01 使用网络协议分析仪Wireshark
- 国家虚拟仿真实验教学项目共享平台(实验空间)PHP SDK
- 采购经理人指数(PMI)
- 中文汉字错别字纠错方法
- ardupiolt AP_AHRS库类的分析(一)AP_AHRS_NavEKF
- 用Java语言定义一个整数定义的数组,求奇数个数和偶数个数。
- 操作系统——精髓与设计原理(第九版)
- 钱,才是成年人活着的最大底气
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。