python爬取王者皮肤

152 阅读2分钟

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

import requests

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

import re

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

import os

确定网址

link = 'pvp.qq.com/web201605/j…'

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

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'pvp.qq.com/web201605/h…'

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

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 = 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'game.gtimg.cn/images/yxzj…'

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)