Python+Fiddler5带你爬取6000+高清王者荣耀cosplay图
写在前面
最近在玩蛇的时候发现一个抓包神器Fiddler,简直不要太好用,于是当作练手就把这软件给安排了,王者荣耀盒子一个很古老的软件,打开界面看到上次更新还是在2020年8月,可能制作者都放弃对他的维护了吧,不知道喜欢王者荣耀的小伙伴有没有人用过这软件呢?但是这不影响,毕竟是用来练手的东西,我们关注的还是有没有值得爬的东西,直到我看到了这个:
不得不说,这才是正经人该干的事情,坏笑😏~
下面进入正文
工具准备
- Python3.9.12(其它版本也行,支持requests库就ok)
官网:https://www.python.org/ - 一款自己喜欢的编辑器(我这里用的是pycharm2022.1,无敌~)
官网:https://www.jetbrains.com/pycharm/download/ - 一个软件抓包工具(我用的Fiddler(5.0汉化版)
官网:https://www.telerik.com/fiddler
想要汉化版的小伙伴见文末哦~ - 王者荣耀盒子
软件获取:见文末
Fiddler抓包工具的使用
这里我就不赘述了,大家参考一下这篇别人写的博客吧~
链接:
https://www.cnblogs.com/lvjinlin/p/15917531.html
https://blog.youkuaiyun.com/qq_42961150/article/details/122545929
当出现下面这个界面也就okl
网址分析
- 配置好Fiddler,手机电脑连接同一个WiFi或者电脑连接手机热点都行,设置好代理及端口
代理选择手动,win+R 输入ipconfig查看ip地址,端口默认8888 - 手机打开 王者荣耀盒子 ->辅助 ->精彩图集
然后fiddler点击相应网址,注意看下面3个重要的地方
代码编辑
首先发送一次请求查看相应内容分析需要提取的地方进行数据清洗
可以看到’thumb_img’里面的内容就是我们所需要的东西了
多的也不赘述了,直接看下面代码吧,有什么不懂得地方欢迎留言提问
# -*- coding: utf-8 -*-
# @Author :
# @Date : 2022/4/30 23:06
# @IDE : PyCharm(2022.1) Python3.9.12
import time
import re
from pprint import pprint
import chardet
import requests
# 王者荣耀盒子请求头
headers = {'Accept-Charset': 'UTF-8',
'Accept-Encoding': 'gzip,deflate',
'User-Agent': # TODO 这里自己获取,或者公众号领取源码,
'X-Requested-With': 'XMLHttpRequest',
'Content-type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'Host': 'gamehelper.gm825.com'}
# 王者荣耀精彩图集url
picture_url = "http://gamehelper.gm825.com/wzry/gallery/list?pn={}" \
"&channel_id=90014a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=13" \
".0.4.0&version_code=13040&cuid=4E907F37FF2DA3495F62741E71FF2DD8&ovr=11&device=vivo_V2024A&net_type=1" \
"&client_id=&info_ms=&info_ma=dUZkq4DB4wNOx83UjQ4055fOKyJQTqN6cMKZz51pa0c%3D&mno=0&info_la=zRzvFFwXV2O" \
"%2Bb1xpYuXL1Q%3D%3D&info_ci=zRzvFFwXV2O%2Bb1xpYuXL1Q%3D%3D&mcc=0&clientversion=13.0.4.0&bssid" \
"=dUZkq4DB4wNOx83UjQ4055fOKyJQTqN6cMKZz51pa0c%3D&os_level=30&os_id=3e95c90cc7ed8a23&resolution" \
"=1080_2278&dpi=480&client_ip=10.69.138.216&pdunid=unknown"
def wonderful_atlas():
"""
精彩图集下载
:return: 每张图片的url地址列表
"""
url_li = []
i = 1
# r = requests.get(url=picture_url.format(i), headers=headers)
# r.encoding = chardet.detect(r.content)['encoding'] # 自动解码
# 获取每张图片的url地址并保存到url_all.csv文件当中
with open('url_all.csv', 'w+', encoding="gbk", errors='ignore') as f:
while True:
r = requests.get(url=picture_url.format(i), headers=headers).json()
i += 1
if not r['list']:
print("没有下一页了哦...本次一共爬取到%d页" % i)
break
else:
time.sleep(0.25)
print("正在爬取第%d页" % i)
for x in r["list"]:
# f.write(x['title'] + "\n")
for each_url in x['thumb_img']:
url_li.append(each_url)
f.write(each_url + "\n")
print('爬取完毕,文件写入成功!')
return url_li
def down_pic(li):
"""
实现图片下载并保存到本地功能
:param li: 存放每张图片的url地址列表
:return:
"""
print("共有%d张图片需要保存" % len(li))
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"}
n = 0
for i in li[]:
# TODO 这里记得新建一个文件夹或者重新设置保存路径
name = "E:/王者荣耀/cosplay/" + str(i[22:])
try:
res = requests.get(url=i, headers=header).content
with open(name, 'wb') as f:
f.write(res)
except:
print(i)
if len(i) >= 15:
with open("err.csv", 'w+') as f:
f.write(i)
continue
n += 1
if n % 100 == 0:
print(n)
print("保存成功!")
def two_down():
"""
对第一次下载异常的图片重新进行下载
:return:
"""
header = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/100.0.4896.127 Safari/537.36"}
with open('err.csv', 'r') as f:
while f.readline():
u = f.readline()
print(u)
name = "E:/王者荣耀/cosplay/" + str(u[27:]).replace("\n", "")
res = requests.get(url=u, headers=header).content
with open(name, 'wb') as f2:
f2.write(res)
# x = "http://pictest.wankacn.com/2017-05-11_591416374bd1f.jpeg"
# y = re.match("[^'http:\/\/pictest\.wankacn\.com\/'](.+)", x)
# print(y.group())
if __name__ == '__main__':
# pprint(requests.get(url=picture_url.format(1), headers=headers).json())
ll = wonderful_atlas()
down_pic(ll)
# two_down()
每次只能得到一个网页,formoat(i)配合for循环进行翻页处理,异常处理保证稳定下载5800+张图片,抛出异常的主要原因是地址不匹配,有兴趣的小伙伴可以用正则表达式进行提取,这部分代码也有一点,但不太完美。获取到每张图片的url地址后通过模拟电脑浏览器发送请求要更快。
结果展示
简直不要太内啥。一个字:
资源领取方式
微信搜索公众号 “雪南技术栈” 后台回复 [ 王者荣耀cosplay ] 领取
包括:Fiddler5.0汉化版、源码、图片url地址等