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


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

相关文章
|
6月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
449 68
|
PHP
PHP全自动采集在线高清壁纸网站源码
PHP全自动采集在线高清壁纸网站源码,PHP全自动采集在线高清壁纸网站源码,一款开源壁纸源码,无需安装。集合360壁纸,百度壁纸,必应壁纸,简单方便。每天自动采集,自动更新,非常不错,php源码 网站源码 免费源码 自动采集。
286 3
|
4月前
|
Python
Python 办公实战:用 python-docx 自动生成 Word 文档
本文详解如何使用 python-docx 库实现 Word 文档自动化生成,涵盖环境搭建、文档创建、格式设置、表格与图片处理、模板填充、批量生成及性能优化等实战技巧,助你高效完成办公场景中的文档自动化任务。
1157 1
|
机器学习/深度学习 人工智能 自然语言处理
简述人工智能,及其三大学派:符号主义、连接主义、行为主义
简述人工智能,及其三大学派:符号主义、连接主义、行为主义
7408 0
简述人工智能,及其三大学派:符号主义、连接主义、行为主义
|
12月前
|
JSON API 数据格式
BING壁纸免费API接口教程
接口简介:获取每日不同的必应官方壁纸。请求地址:https://cn.apihz.cn/api/img/bingapi.php,支持POST或GET请求。需提供用户ID、用户KEY及返回格式(JSON/TXT)。返回状态码和图片地址或错误信息。示例及详细文档见官网。
|
11月前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
2005 8
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的壁纸网站的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的壁纸网站的详细设计和实现(源码+lw+部署文档+讲解等)
172 2
|
机器学习/深度学习 人工智能 安全
使用HeyGen创建AI数字人
使用HeyGen创建AI数字人
813 4
|
Linux 测试技术 iOS开发
【好玩的开源项目】使用Docker部署YesPlayMusic在线音乐播放器
【4月更文挑战第14天】使用Docker部署YesPlayMusic在线音乐播放器
893 2
|
存储 开发者 Python
Python项目实战案例-批量下载网易云榜单音乐保存至本地
Python项目实战案例-批量下载网易云榜单音乐保存至本地
322 1