利用Python批量下载高清壁纸
注:本文内容仅作为编程技术学习讨论,相关代码和数据不可用于商业用途,否则后果自负。
代码:
我们先看一下手动下载的过程,注意不是右键图片另存为,右键另存的方式获取的图片是经过一定比例压缩的,清晰度会降低很多。以Nature为例,点击Download free,选择下载路径即可。
接下来,分析具体网页:
首先,我们观察到网页底部有页码选择项,我们试着下拉网页滑块,发现图片是动态加载的,也就是是我们下拉网页时,后续图片才陆续显示。
我们把几个url拿出来看一下:
以上链接只有page参数不同,而且是依次递增的,还算是比较友好,请求时依次遍历就可以了。
页码的问题已经解决,接下来分析每张图片的链接:
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)
关于如何将代码打包成EXE可执行文件,可参考之前的文章:将打飞机游戏打包成 exe
注意:
尽量不要频繁的爬取,以免影响网络秩序!同时也增加被封屏蔽的风险
图片为外网高清图片,爬取速度和网络有关,一般不会太快。
可以构建代理池爬取,速度更快。
主要功能代码已在文中给出。如需获取配套exe可执行工具,请在公众号后台回复关键字:壁纸
作者:欧King
_往期文章推荐_