Python | P站壁纸爬取
今天我们要爬取的是动漫壁纸图片,来看今天的主角:
在浏览的时候,当滑到底部时,壁纸会刷新加载,所以我们可以知道,壁纸是动态加载的。
打开开发者模式,观察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)
最后,附上几张超可爱的壁纸
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!