ToB企服应用市场:ToB评测及商务社交产业平台

标题: python对王者荣耀英雄皮肤进行图片采集~ [打印本页]

作者: 尚未崩坏    时间: 2022-9-2 03:15
标题: python对王者荣耀英雄皮肤进行图片采集~
前言

嗨喽~大家好呀,这里是魔王呐
环境使用:

模块使用:

基本套路

一. 数据来源分析


505 表示英雄ID
2 皮肤第几个 ---> 通过皮肤名字对应他的皮肤链接
想要获取 yao 皮肤数据
二. 代码实现步骤

代码
  1. # 导入数据请求模块  ---> 第三方模块 需要 在cmd里面进行安装 pip install requests
  2. import requests
  3. # 导入正则模块  ---> 内置模块 不需要安装
  4. import re
  5. # 导入文件操作模块  ---> 内置模块 不需要安装
  6. import os
  7. # 确定网址
  8. link = 'https://pvp.qq.com/web201605/js/herolist.json'
  9. # 模拟伪装浏览器 ---> 请求头
  10. headers = {
  11.     # user-agent 用户代理 表示浏览器基本身份标识
  12.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  13. }
  14. # 发送请求
  15. json_data = requests.get(url=link, headers=headers).json()
  16. # for循环遍历
  17. for index in json_data:
  18.     # 字典键值对取值 根据冒号左边的内容[键],提取冒号右边的内容[值]
  19.     hero_id = index['ename']
  20.     hero_name = index['cname']
  21.     # 设定文件夹路径 相对路径
  22.     file = f'img\\{hero_name}\\'
  23.     if not os.path.exists(file):
  24.         os.makedirs(file)
  25.     """
  26.     1. 发送请求, 模拟浏览器对于url地址发送请求
  27.         - headers 字典数据类型, 构建完整键值对
  28.         - 请求头参数 可以直接在开发者工具复制粘贴
  29.         - 使用什么请求方法, 根据开发者工具来
  30.     """
  31.     # 确定请求url地址
  32.     url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml'
  33.     # 模拟伪装浏览器 ---> 请求头
  34.     headers = {
  35.         # user-agent 用户代理 表示浏览器基本身份标识
  36.         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  37.     }
  38.     # 发送请求 ---> <Response [200]> 响应对象: <>表示对象 response 响应回复 200 状态码 表示请求成功
  39.     response = requests.get(url=url, headers=headers)
  40.     # 乱码了 怎么办? ---> 你要根据网页编码来 response.encoding = 'gbk'
  41.     # 自动识别编码
  42.     response.encoding = response.apparent_encoding
  43.     # 获取数据, 获取服务器返回响应数据 文本数据 print(response.text)
  44.     """
  45.     解析数据 re正则  会1 不会2
  46.         re.findall()  从什么地方 去找什么数据
  47.         从 response.text 里面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我们要的数据
  48.     """
  49.     title_list = re.findall('data-imgname="(.*?)">', response.text)[0]
  50.     # 鹿灵守心&0|森&0|遇见神鹿&71|时之祈愿&94|时之愿境&42
  51.     title_list = re.sub('&\d+', '', title_list).split('|')
  52.     print(title_list)
  53.     # for循环 for num in range(1, 6): len() 统计列表元素个数
  54.     for num in range(1, len(title_list) +1):
  55.         # 列表取值, 根据索引位置,索引位置从0开始计数
  56.         img_name = title_list[num-1]
  57.         # 构建图片url地址
  58.         img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg'
  59.         print(img_name, img_url)
  60.         # 保存数据 ---> 发送请求 获取数据 二进制数据
  61.         img_content = requests.get(url=img_url, headers=headers).content
  62.         with open(file + img_name + '.jpg', mode='wb') as f:
  63.             f.write(img_content)
复制代码

 
 

 
 
 
 
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4