神器 | 一键下载海量高清无码壁纸

de5b8f6d8714784314754e05a5daafba.png

文 | 豆豆

来源:Python 技术「ID: pythonall」

4b06dbcf91b0ab5e04e3236c39bc0bbd.png

电脑默认的壁纸简直不是太难看,今天给大家介绍一个拥有海量壁纸的网站,即使你一天换一张也取之不尽用之不竭,网址如下:

https://unsplash.com/

分析网站

这个网站基本上会定时更新自己的图库,都是高清无码的哦,质量只是不用说,做电脑壁纸实在是不二之选。

作为技术人当然不能一张一张去手动下载啦,这操作不符合我们技术人的身份气质,于是我研究了下网站的结构,发现当下拉页面时,网页会不断请求服务器获取新的图片信息,简单分析完网络请求之后发现了天机。

feff79b7d673c3833cbaa5f2f3614122.png

返回的信息是一个列表,每个列表中的有一个 urls 的字段,这个字段中包含很多个链接,一看就是根据图片清晰度做的区分,我们直接打开 full 链接看看是否是我们要找的图片。

9459a662aa7032b381c6f61f061bc92d.png

至此,我们已经摸清了网站的图片加载流程,简言之就是通过调整 api 请求中的 page 参数来获取不同页码的请求结果,然后将图片 url 从请求结果中解析出来并下载到本地即可。

下载图片

首先需要一个下载图片的函数,该函数接受一个图片的路径和名称,然后将图片下载到当前目录。

import urllib.request

def download_img(img_url, file_name):
    print(F'downloading {file_name}, img_url = {img_url}')
    request = urllib.request.Request(img_url)
    try:
        response = urllib.request.urlopen(request)
        if (response.getcode() == 200):
            with open(file_name, "wb") as f:
                f.write(response.read())  # 将内容写入图片
            return 'ok'
    except:
        return "fail"

然后就是处理结果集的函数了,该函数负责解析出图片路径,然后调用下载函数直接下载。

# 处理结果集
def deal_result(result, page):
    index = page * 12 # 每页有 12 张图片,所以这里需要转换下
    for i in range(len(result)):
        img_url = result[i]['urls']['full']
        index += 1
        download_img(img_url, str(index) + '.png')

接下来就是网络请求函数,非常简单,直接将请求结果返回即可。

import requests as req

# 发送请求
def send_get(url, params):
    time.sleep(2)
    response = req.get(url, headers=None, params=params)
    return response.text

最后通过不断循环自增 page 来模拟翻页,并在入口函数中调用其即可。

# 循环翻页
def loop():
    for i in range(3):
        url = 'https://unsplash.com/napi/photos?per_page=12&page=' + str(i)
        print(F'page = {i}, url = {url}')
        response = json.loads(send_get(url, None))
        deal_result(response, i)

if __name__ == '__main__':
    loop()

先来看看程序日志。

567556758435222d61a046b67f224718.png

打开资源管理器看下结果。

cd8a838ebb2f8483c63599496a001bd4.png

至此,大功告成。

总结

今天派森酱给大家介绍了一个拥有海量高清无码图片的抓取方法,40 行代码即可轻松实现一键下载海量高清图片,美滋滋,再也不担心没有好看的图片做壁纸了。小伙伴们平时都是怎么找壁纸的呢,欢迎在评论区分享你的独家秘密哦~

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

a94c18f4be56f65f47360b9d45366dfc.gif

神秘礼包获取方式

识别文末二维码,回复:豆豆

1ea63f192834b20d58a7c49720585678.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值