ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python | P站壁纸爬取

2021-10-14 23:35:26  阅读:181  来源: 互联网

标签:img python 爬取 headers 壁纸 path os page


今天我们要爬取的是动漫壁纸图片,来看今天的主角:

在浏览的时候,当滑到底部时,壁纸会刷新加载,所以我们可以知道,壁纸是动态加载的。

打开开发者模式,观察HTML的动态变化。

点击NetWork,XHR,我们就可以发现,

图片地址是通过JSON数据传输过来的,所以,我们不就知道了每张壁纸对应的url了吗O(∩_∩)O

找到对应数据接口,开始代码的干活!

通过输入指定页数,遍历循环:

import requests
import jsonpath
import json
import os

page = input("请输入需要下载的页数:")
if not os.path.exists('img'):
    os.mkdir('img')

for i in range(int(page)):
    num = 1
    url = f'https://rt.huashi6.com/front/index/load_pc_data?_ts_=1634131862878&cursor=' + str(i) + '-1634130800452'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0'
    }
    path = f'img\\第{i+1}页'
    if not os.path.exists(path):
        os.mkdir(path)
    else:
        print(path + '已存在')
        continue
    html = requests.get(url, headers=headers).content.decode("utf-8")
    data = json.loads(html)
    img = jsonpath.jsonpath(data, '$..path')
    print(f"开始下载第{i+1}页...")
    for j in img:
        with open(path+ '\\' + str(num) + os.path.splitext(j)[1], 'wb') as f:
            print(f"第{i+1}页  正在下载第{num}张...")
            f.write(requests.get('https://img2.huashi6.com/' + j, headers=headers).content)
            num += 1

三十行代码不到,就可以搞定啦
代码运行:

结果:

额,突然发现,第一页和第二页是一样的, ̄□ ̄||

不慌,我们可以选择过滤掉第一页

把代码for i in range(int(page))

改成for i in range(1,int(page)+1)

再把后面三个地方的 i+1 改成 i 即可(〃'▽'〃)

注:如果有对Json和JsonPath模块不懂的,可以点击下面链接查看:
Python | JSON 数据解析(Json & JsonPath)

标签:img,python,爬取,headers,壁纸,path,os,page
来源: https://www.cnblogs.com/echohye/p/15409155.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有