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


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

相关文章
|
4月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
318 68
|
Python
Python 判断字符串是否包含子字符串
Python 判断字符串是否包含子字符串
1092 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的壁纸网站的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的壁纸网站的详细设计和实现(源码+lw+部署文档+讲解等)
142 2
|
10月前
|
JSON API 数据格式
BING壁纸免费API接口教程
接口简介:获取每日不同的必应官方壁纸。请求地址:https://cn.apihz.cn/api/img/bingapi.php,支持POST或GET请求。需提供用户ID、用户KEY及返回格式(JSON/TXT)。返回状态码和图片地址或错误信息。示例及详细文档见官网。
|
移动开发 HTML5
动漫二次元漂亮的网站导航HTML5源码
二次元漂亮网站导航HTML源码,页面中还调用了很多外站的图片等链接需自行更换。
367 4
|
关系型数据库 MySQL 开发工具
Docker安装mysql8.0
Docker安装mysql8.0
628 0
|
数据可视化
ggGenshin&Genshinpalette|SCI绘图遇上原神,不输于CNS正刊调色板
本文介绍了两个R包——`ggGenshin`和`Genshinpalette`,它们提供了基于热门游戏《原神》角色色彩的调色板,用于数据可视化。`ggGenshin`包包含了一系列与游戏角色相关的颜色,可以方便地应用到`ggplot2`图形中,而`Genshinpalette`包则提供了更多角色的配色选项。通过这两个包,用户可以直接使用预设的配色方案,提升图表的视觉效果。文中还展示了使用这些调色板绘制的一些示例图表。
655 0
|
Linux 测试技术 iOS开发
【好玩的开源项目】使用Docker部署YesPlayMusic在线音乐播放器
【4月更文挑战第14天】使用Docker部署YesPlayMusic在线音乐播放器
775 2
|
SQL 存储 JSON
StarRocks进阶
【6月更文挑战第1天】StarRocks支持四种表类型:明细表、聚合表、更新表(正被主键表取代)和主键表。建表后类型不可修改,排序键需先于其他列定义,不支持BITMAP和HLL类型。主键表具有唯一非空约束的主键,适合实时更新和高效查询。明细表用于追加新数据,不支持修改。聚合表用于聚合统计,排序键需唯一。表引擎默认为OLAP,也可连接到外部数据源如MySQL、Hive等。数据类型包括数值、字符串、日期和半结构化类型如JSON。此外,还支持多种函数、DDL操作和HTTP SQL API。
1178 0
|
索引 存储 数据格式
干货 | 知识库全文检索的最佳实践
这是stackoverflow上一篇精彩的问答。
1412 0