python做壁纸_Python爬取壁纸

不想一张张看壁纸怎么办,不想一张张下载怎么办,来让我们用python解决一切,爬取一网站所有壁纸。

1.准备前期运行环境

·python运行环境,安装request模块 (这个问题需要自己去解决)

2.分析网页行为 [想直接点的,可以跳过这一节,copy-code-running]

·网站管理员禁用了F12

cfc3374653ea

openB.png

·分析出网站图片地址

cfc3374653ea

01.png

可以拿这个地址去新标签试一下,我们会发现请求到的是图片的缩略图,明显不是我们想要的

我们要拿到图片的真实地址

我们去看网站请求的资源

cfc3374653ea

02.png

这个请求,站长做了验证,所以我们需手动赋值数据内容保存到本地备用

我们分析一下用了什么方式请求到的真实地址

cfc3374653ea

03.png

·分析地址的构成规律

json文件中每一个item

t代表图片类型 type

x代表图片宽 width

i代表图片的id

y代表图片的高 height

很显然这个拼接规律是 其中的图片id和类型要替换

3.根据分析到的解决思路写代码

我没有做用户代理,没有按工程化流程来,没有做异常处理

只是简述了这个小demo的分析原理

测试的时候下载有点迟缓,不过不影响

import requests

import json

# 定义基本变量

urlbase = "https://w.wallhaven.cc/full/"

# json文件地址

filejson = "imgjson.json"

# 下载壁纸的路径 -请自行修改

filepath = "D:\\PycharmProjects\\robots\\bizhi\\"

# 保存的拼接字符串

Imgjson = []

def Concaturl(records):

for item in records:

imgType = "png" if item["t"] == "p" else "jpg"

imgid = item["i"]

concaturl = imgid[0:2] + "/wallhaven-" + imgid + "." + imgType

Imgjson.append(concaturl)

print("地址拼接完成,开始下载...")

def DownLoadImg():

i = 1

for img in Imgjson:

imgtype = "png" if img[-3:-2] else "jpg"

url = urlbase + img

ref = requests.get(url)

fh = open(filepath + str(i) + "." + imgtype + "", "wb")

fh.write(ref.content)

print("第" + str(i) + "张下载成功")

i += 1

print("全部下载成功")

if __name__ == '__main__':

f = open(filejson, "r")

load_dict = json.load(f)

records = load_dict["result"]["records"]

# 拼接好的字符串列表

Concaturl(records)

# 下载函数

DownLoadImg()

cfc3374653ea

04.png

好看的壁纸就存下来啦,不用挑,也不用一个个下。人生路远,简单就好!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值