版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
王者荣耀皮肤获取
目标: 获取王者荣耀英雄皮肤及对应的皮肤链接保存到mysql数据库
1. 抓包找到英雄列表, 通过requests请求获取英雄名, 英雄详情页, 皮肤数量, 存入mysql数据库
2. 访问详情页, 此时的图片链接在网页源代码里无法直接获取到; 遇到这种情况首先分析图片链接, 不难发现, 这个图片链接通过116和3拼接而来, 116 是英雄特有编号, 从上面数据库数据不难发现; 3 代表第几个皮肤, 阿珂有5个皮肤, 这里就是1,2,3,4,5依次拼接
//game.gtimg.cn/images/yxzj/img201606/skin/hero-info/116/116-bigskin-3.jpg
3. 网页源代码里只有皮肤名称, 并没有皮肤链接 ,此时就需要和上一步得到的链接进行一一对应了
4. 部分代码如下, 完整代码在github上可以获取
# @Time : 2019/10/19 16:47
# @Author : GKL
# FileName : get_skin.py
# Software : PyCharm
import re
import time
import requests
from public.operation_db import *
def spider(tag, count, url, name):
response = requests.get(url)
response.encoding = response.apparent_encoding
# 皮肤名称列表
skin_name_list = re.findall(r'data-imgname="(.*?)"', response.text)[0].split('|')
url_list = []
for i in range(1, count+1):
# 英雄皮肤url地址
skin_url = 'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{0}/{0}-bigskin-{1}.jpg'.format(tag, i)
url_list.append(skin_url)
data_list = []
for skin_name, url in zip(skin_name_list, url_list):
data = [name, skin_name, url]
data_list.append(data)
# 插入数据
insert_sql = 'insert into wzry_skin_url(name, skinName, skinUrl) values(%s, %s, %s)'
save_batch_data(insert_sql, data_list)
if __name__ == '__main__':
while True:
select_sql = 'select name, url, count from wzry_detail_link where status=0 limit 1'
tuple_data = select_data(select_sql)
if tuple_data:
# 英雄名称
name = tuple_data[0][0]
print(name)
# 英雄详情
url = tuple_data[0][1]
# 英雄唯一标签
tag = re.findall(r'\d+', url)[-1]
# 英雄皮肤数量
count = tuple_data[0][2]
spider(tag, count, url, name)
update_sql = 'update wzry_detail_link set status=1 where name = "%s"' % name
update_data(update_sql)
time.sleep(2)
else:
break