现在玩游戏没得个皮肤,都不好意思说自己玩了游戏,听说某皮肤还有攻击距离加成,不知道真的假的,咱们今天就全部把它爬下来~
软件/模块/流程
这里我们使用的软件是
Python 3.8 Pycharm
没有的话在最左边扫一下就有了
模块
requests >>> 数据请求模块 第三方模块 re >>> 正则表达式 解析数据 内置模块 不需要安装 # Python学习交流群:924040232 os >>> 文件操作 自动创建文件夹 内置模块 不需要安装
win+r 输入cmd ,然后输入 pip install requests 直接安装
失败了的话,看我置顶文章。
流程
- 发送请求, 对于英雄ID数据包发送请求 https://…com/web201605/js/herolist.json
- 获取数据, 获取服务器返回的response响应数据
- 解析数据, 提取我们想要的数据内容英雄ID 以及 英雄名字
- 发送请求, 对于英雄的详情页发送请求 https://…com/web201605/herodetail/542.shtml
- 获取数据, 获取服务器返回的response响应数据
- 解析数据, 提取皮肤的名字 以及构建完整图片url地址
- 保存数据
视频讲解
完整的视频讲解,会了的可以不看
地址:表弟新年礼物问我要王者皮肤,我直接用python给他爬了个全皮肤!
代码展示
代码不多,稍微会一点的,对照流程就能做出来了,初学者不会的话可以看上面的视频。
import requests # 数据请求模块 第三方模块 pip install requests import re # 正则表达式模块 内置模块 import os # 文件操作模块 # 1. 发送请求 url = 'https://***.com/web201605/js/herolist.json' # 确定请求url # 加上headers请求头进行伪装 headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36' } # 通过requests这个模块里面get请求方法对于url地址发送请求, 并且携带上headers请求头伪装, 最后用response变量接收返回数据 response = requests.get(url=url, headers=headers) # print(response.json()) # <class 'list'> # print(type(response.json())) # print(response.text) # <class 'str'> # print(type(response.text)) # 2. 获取数据, 获取服务器返回的response响应数据 # 3. 解析数据, 提取我们想要的数据内容英雄ID 以及 英雄名字 for index in response.json(): # 字典取值 根据冒号左边的内容 提取冒号右边的内容 键值对取值 hero_id = index['ename'] # 英雄ID hero_name = index['cname'] # 英雄名字 # 相对路径 你代码在哪个文件夹里面, 生成的就是那个 # 绝对路径 指定那个硬盘那个文件里面 path = f'{hero_name}\\' if not os.path.exists(path): # 判断是否有这个文件夹 os.mkdir(path) # 没有创建 # 字符串格式化方法 hero_url = f'https://****.com/web201605/herodetail/{hero_id}.shtml' # 4.发送请求, 对于英雄的详情页发送请求 response_1 = requests.get(url=hero_url, headers=headers) # 遇到乱码, 直接进行转码 response_1.encoding = response_1.apparent_encoding # 自动识别编码 # print(hero_id, hero_name, hero_url) # print(response_1.text) title_info = re.findall('<ul class="pic-pf-list pic-pf-list3" data-imgname="(.*?)">', response_1.text)[0] title_info = re.sub('&\d+', '', title_info).split('|') # len(title_info) >>> 4 # 统计列表有多少个元素, print(title_info) # len(title_info) + 1 >>> 5 for i in range(1, len(title_info) + 1): # 顾头不顾尾 img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{i}.jpg' img_name = title_info[i-1] print(img_name, img_url) img_content = requests.get(url=img_url, headers=headers).content # 获取图片二进制数据 with open(path + str(img_name) + '.jpg', mode='wb') as f: f.write(img_content) print(hero_name, img_name)
兄弟们,今天的分享就到这,快去试试吧~
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。