收藏|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


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

相关文章
如何在cmd中打开指定文件夹路径
如何在cmd中打开指定文件夹路径
3907 0
|
存储 Shell 索引
如何在Bash中使用For循环和数组?
如何在Bash中使用For循环和数组?
1225 0
|
4月前
|
人工智能 IDE 开发工具
阿里云Qoder CN(原通义灵码)全解析:产品形态、版本划分与技术适配指南
Qoder CN是阿里云推出的AI智能编码助手,前身为“通义灵码”,于2026年5月20日完成品牌升级,正式更名为Qoder CN。作为面向软件开发全流程的智能体产品,它覆盖编码、办公、终端等多元场景,基于国内主流大模型与国内部署架构,满足金融、政务等行业对数据安全与合规的高要求。
2633 0
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
2955 6
LVS,软负载均衡
|
人工智能 算法 架构师
人工智能认证就业:从能力认证到职业跃迁的路径解析
人工智能浪潮席卷全球,AI技术正深刻重构职业生态。生成式人工智能认证(GAI认证)应运而生,作为系统化能力认证体系,它不仅帮助个人锚定技术方向,也为企业提供可靠的人才评估标尺。本文从宏观与个体视角探讨AI认证的价值:宏观上,认证体系是人才市场的“通用语言”,助力伦理合规;个体层面,认证能打破经验壁垒、实现职业跃迁,并通过体系化学习提升安全感。GAI认证以“技术深度+场景广度+伦理高度”设计,成为连接技术变革与职业发展的桥梁,鼓励每个人成为AI时代的“能力架构师”。
|
安全
【📕分布式锁通关指南 07】源码剖析redisson利用看门狗机制异步维持客户端锁
Redisson 的看门狗机制是解决分布式锁续期问题的核心功能。当通过 `lock()` 方法加锁且未指定租约时间时,默认启用 30 秒的看门狗超时时间。其原理是在获取锁后创建一个定时任务,每隔 1/3 超时时间(默认 10 秒)通过 Lua 脚本检查锁状态并延长过期时间。续期操作异步执行,确保业务线程不被阻塞,同时仅当前持有锁的线程可成功续期。锁释放时自动清理看门狗任务,避免资源浪费。学习源码后需注意:避免使用带超时参数的加锁方法、控制业务执行时间、及时释放锁以优化性能。相比手动循环续期,Redisson 的定时任务方式更高效且安全。
1476 24
【📕分布式锁通关指南 07】源码剖析redisson利用看门狗机制异步维持客户端锁
|
机器学习/深度学习 人工智能 自然语言处理
人工智能基础知识:介绍人工智能的历史,基本概念和应用领域
人工智能基础知识:介绍人工智能的历史,基本概念和应用领域
17071 0
|
存储 编解码 算法
哈夫曼树完全解析:从原理到应用
哈夫曼树是一种带权路径长度最短的二叉树,广泛应用于数据压缩领域。它通过为高频元素分配短编码、低频元素分配长编码,显著减少数据量。构建时根据权重动态合并节点,最终生成无歧义前缀编码。其核心特性包括最优压缩效率、贪心策略有效性和高空间利用率。在现代应用中,哈夫曼编码被用于ZIP压缩、PNG图像、HTTP/2头部压缩及多媒体处理等领域。例如,对字符串“ABRACADABRA”进行压缩,可将88bit数据降至26bit,压缩率达70.5%。
|
机器学习/深度学习 搜索推荐 数据可视化
无热图不组学!高阶文献热图R语言绘制小专场拿捏
近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《
1189 0