ITPub博客

首页 > IT职业 > IT生活 > python对英雄皮肤进行图片采集~

python对英雄皮肤进行图片采集~

IT生活 作者:专注的阿熊 时间:2022-08-03 17:21:31 0 删除 编辑

# 导入数据请求模块   ---> 第三方模块 需要 在 cmd 里面进行安装 pip install requests

import requests

# 导入正则模块   ---> 内置模块 不需要安装

import re

# 导入文件操作模块   ---> 内置模块 不需要安装

import os

# 确定网址

link = 'https://pvp.qq.com/web201605/js/herolist.json'

# 模拟伪装浏览器 ---> 请求头

headers = {

     # user-agent 用户代理 表示浏览器基本身份标识

     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'

}

# 发送请求

json_data = requests.get(url=link, headers=headers).json()

# for 循环遍历

for index in json_data:

     # 字典键值对取值 根据冒号左边的内容 [ 键 ], 提取冒号右边的内容 [ 值 ]

     hero_id = index['ename']

     hero_name = index['cname']

     # 设定文件夹路径 相对路径

     file = f'img\\{hero_name}\\'

     if not os.path.exists(file):

         os.makedirs(file)

     """

     1. 发送请求 , 模拟浏览器对于 url 地址发送请求

         - headers 字典数据类型 , 构建完整键值对

         - 请求头参数 可以直接在开发者工具复制粘贴

         - 使用什么请求方法 , 根据开发者工具来

     """

     # 确定请求 url 地址

     url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml'

     # 模拟伪装浏览器 ---> 请求头

     headers = {

         # user-agent 用户代理 表示浏览器基本身份标识

         'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'

     }

     # 发送请求 ---> <Response [200]> 响应对象 : <> 表示对象 response 响应回复 200 状态码 表示请求成功

     response =跟单网gendan5.com requests.get(url=url, headers=headers)

     # 乱码了 怎么办 ? ---> 你要根据网页编码来 response.encoding = 'gbk'

     # 自动识别编码

     response.encoding = response.apparent_encoding

     # 获取数据 , 获取服务器返回响应数据 文本数据 print(response.text)

     """

     解析数据 re 正则  会 1 不会 2

         re.findall()   从什么地方 去找什么数据

         从 response.text 里面 去找 data-imgname="(.*?)"> 其中 (.*?) 就是我们要的数据

     """

     title_list = re.findall('data-imgname="(.*?)">', response.text)[0]

     # 鹿灵守心 &0| 森 &0| 遇见神鹿 &71| 时之祈愿 &94| 时之愿境 &42

     title_list = re.sub('&\d+', '', title_list).split('|')

     print(title_list)

     # for 循环 for num in range(1, 6): len() 统计列表元素个数

     for num in range(1, len(title_list) +1):

         # 列表取值 , 根据索引位置 , 索引位置从 0 开始计数

         img_name = title_list[num-1]

         # 构建图片 url 地址

         img_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{num}.jpg'

         print(img_name, img_url)

         # 保存数据 ---> 发送请求 获取数据 二进制数据

         img_content = requests.get(url=img_url, headers=headers).content

         with open(file + img_name + '.jpg', mode='wb') as f:

             f.write(img_content)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946337/viewspace-2908848/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    410
  • 访问量
    276777