收藏|Unsplash高清壁纸批量下载(源码+工具)!

简介: 收藏|Unsplash高清壁纸批量下载(源码+工具)!

本期导读

Unsplash 是一个免费高质量照片的网站,都是真实的摄影照片,照片分辨率也很大,对设计师朋友来说是非常好的素材,对一些插图类文案写作的朋友也非常实用,当壁纸效果也很不错哦。我已将相应功能代码封装成exe工具,不用安装,便可直接运行,文末附有代码+工具获取方式。


01

Unsplash网址:https://unsplash.com/

我们先看一下手动下载的过程,注意不是右键图片另存为,右键另存的方式获取的图片是经过一定比例压缩的,清晰度会降低很多。以Nature为例,点击Download free,选择下载路径即可,图片大小1.43M。

接下来,分析具体网页

首先,我们观察到网页底部有页码选择项,我们试着下拉网页滑块,发现图片是动态加载的,也就是是我们下拉网页时,后续图片才陆续显示。

通过几次操作,发现当下拉时,网页会发出如下几个请求,点开其中一个,可以看到图片总数量:10000,总页数:500。

我们把几个url拿出来看一下:

以上链接只有page参数不同,而且是依次递增的,还算是比较友好,请求时依次遍历就可以了。

页码的问题已经解决,接下来分析每张图片的链接

我们看到result列表长度正好是20,与请求中的per_page值相同,毫无疑问,我们要找的每张图片链接就在这里。


分析网页往往比较耗时,不过总的来说还算顺利,下面我们正式爬取图片。


02

运行环境,需要用到以下几个包:

import time
import random
import json
import requests
from fake_useragent import UserAgent
  • time:定时
  • random:生成随机数
  • json:处理json格式数据
  • requests:网页请求
  • fake_useragent:代理

模拟代理,以网页的身份访问服务器,避免请求被服务器判定为机器爬虫而不响应请求。

ua = UserAgent(verify_ssl=False)
headers = {'User-Agent': ua.random}

根据响应,获取所有图片链接:

def getpicurls(i,headers):
    picurls = []
    url = 'https://unsplash.com/napi/search/photos?query=nature&per_page=20&page={}&xp=feedback-loop-v2%3Aexperiment'.format(i)
    r = requests.get(url, headers=headers, timeout=5)
    time.sleep(random.uniform(3.1, 4.5))
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    allinfo = json.loads(r.text)
    results = allinfo['results']
    for result in results:
        href = result['urls']['full']
        picurls.append(href)
    return picurls

保存图片文件:

def getpic(count,url):
    r = requests.get(url, headers=headers, timeout=5)
    with open('pictures/{}.jpg'.format(count), 'wb') as f:
        f.write(r.content)

看一下成果吧:

03

exe工具运行结果:

注意:

  • 尽量不要频繁的爬取,以免影响网络秩序!
  • 图片为外网高清图片,爬取速度和网络有关,一般不会太快。
  • 可以构建代理池爬取,速度更快。


如需工具请在公众号后台回复:unsplash其他问题可以私信、留言,共同学习。

往期推荐

程序员必须掌握的十大排序算法(上)

程序员必须掌握的十大排序算法(下)

Python送你王者荣耀官网全套皮肤!!!

Python 告诉你《你好,李焕英》为什么能超越《唐探3》!!!


END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享到朋友圈让更多人知道哦

相关文章
|
10月前
|
C# 开发者
推荐一款C#开源的操作简单、免费的屏幕录制和GIF动画制作神器
推荐一款C#开源的操作简单、免费的屏幕录制和GIF动画制作神器
|
5月前
|
数据采集 Python
视频下载
利用python爬虫爬取视频
100 0
|
5月前
|
前端开发
在线压缩图片神器
在线压缩图片神器
|
iOS开发 开发者 索引
批量上传iOS应用程序截图的实用技巧
提交iOS应用程序截图到iTunes Connect是一项非常繁琐的任务,因为你必须上传多达数十张屏幕截图,这是一个重复而枯燥的过程。但是,我们有一个好消息要告诉开发者们,现在有一个工具可以帮助你批量上传,方便快捷。
youtube下载视屏和字幕办法
youtube下载视屏和字幕办法
135 0
|
监控 JavaScript 安全
一款web端的好用又好看的音乐、视频播放器-XGPlayer
视频播放器一直是Web端比较难整的功能,虽然已经有比较优秀的开源库。可以满足日常开发大部分的功能,但是在一些功能上还是不尽如人意。今天给大家介绍一款由西瓜团队开源的视频播放器。
一款web端的好用又好看的音乐、视频播放器-XGPlayer
|
Java Android开发
ImagePicker在安卓上对图片的应用一例
偷得浮生半日闲,早上在逛StackOverflow的时候发现有人求助,提到了一个不怎么火的ImagePicker库:
117 0
|
人工智能 前端开发 JavaScript
免费万能图片在线编辑工具,一键抠图改图神器
图片去水印、在线扣图、转换格式,甚至是生成漫画头像!无需下载客户端,仅在一个网站即可完成多项图片编辑处理工作,改图神器里 15+ 工具满足你的多项需求。真算得上一个强大的综合性工具箱!不得不说,在线工具真的提供了很多便捷,而且不用担心软件删除的问题。
免费万能图片在线编辑工具,一键抠图改图神器
|
API Android开发
autojs播放在线音乐的方法
用webview播放, 或者拦截跳转真实链接下载播放
534 0