python爬取超高清壁纸

1.代码

1.1 壁纸地址:http://lab.mkblog.cn/wallpaper/

import json
import os
import time

import requests
from tqdm import tqdm

# 请求头伪装浏览器
headers = {
    
    
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36",
    "cookie": "Hm_lvt_ea4269d8a00e95fdb9ee61e3041a8f98=1620867340,1620974798,1623061160,1623110256; wzws_cid=b1ad87eee921168b37bf3e397317d1c7aac48ca06b77e468725e73e20439fb13f81fa1b47aed67a8f4e4005cb70e538fa7d0e0cba25515cd7ddd1ed6bfa7b768e26eb67d5f7887c245202c893c30d7f4; SL_GWPT_Show_Hide_tmp=0; SL_wptGlobTipTmp=1"}


# 程序开始时间
start = time.time()

# 如果没有这个文件夹就创建这个文件夹
pic_dir = 'D:/Python2020-邱勋涛/爬虫self/精美壁纸/'
if not os.path.exists(pic_dir):
    os.mkdir(pic_dir)

# 爬取每个分类的url的总json url
url1 = "http://lab.mkblog.cn/wallpaper/api.php?cid=360tags"
# 打印json信息
picture_json_1 = requests.get(url1, headers).text
# print(picture_json_1)

# 转成列表信息,里面是分类壁纸的url,id,name
picture_json_2 = json.loads(picture_json_1)['data']
print(picture_json_2)

# 壁纸张数
zhangshu = 0


# 这里循环主要是要找到最终图片url的cid,拼凑成每个分类的的url
for p in range(len(picture_json_2)):
    # 皮肤id
    pic_id = picture_json_2[p]["id"]
    print(pic_id)
    # 分类名字
    pic_name = picture_json_2[p]['name']
    print(pic_name)


    # 定义一个start为-30 ,是因为start从0开始每次递增30,通过url分析,最终到450(其实这也是这整个代码的一个bug,
    # 因为url太多,我也不能确定每个url的start是不是会小于450或者大于450)
    s_tart = -30
    while s_tart <= 450:
        s_tart += 30
        url2 = "http://lab.mkblog.cn/wallpaper/api.php?cid=%s&start=%s&count=30" % (pic_id, s_tart)
        print(url2)
        # 每个壁纸的url的json数据
        picture_json_3 = requests.get(url2).text
        # 变成列表来去壁纸的名字和url
        picture_json_4 = json.loads(picture_json_3)['data']
        print(picture_json_4)
        # print(len(picture_json_4))

        # 获取每个分类的壁纸文件夹下所有的壁纸url和名字
        for q in tqdm(range(len(picture_json_4))):
            # 壁纸名字
            pic_name_1 = picture_json_4[q]['tag']
            print(pic_name_1)
            # 壁纸url
            pic_url = picture_json_4[q]['img_1600_900']
            print(pic_url)
            # 计算壁纸张数
            zhangshu += 1
            print(zhangshu)


            # 分类文件夹,分类保存壁纸
            pic_dir_1 = pic_dir + pic_name + "/"
            if not os.path.exists(pic_dir_1):
                os.mkdir(pic_dir_1)

            # 通过url,获取壁纸的二进制信息
            jm_picture = requests.get(pic_url).content


            # 下载图片并且保存
            with open(pic_dir_1 + pic_name_1 + '.jpg', 'wb') as f:
                f.write(jm_picture)


# 程序结束时间
end = time.time()

# 计算执行时间
over_time = end - start

print("一共下载了%s张精美壁纸,总共花费了%s秒" %(zhangshu,over_time) )


# 邱勋涛撰写,未经允许,不得转载,否则坐牢吧
# 直接复制代码运行,需要修改代码中的俩路径,别这么懒
# 这里面注释很详细,认真看能看懂,不懂就问同学

2.效果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Qiuxuntao/article/details/117729325