王者荣耀皮肤获取

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/gklcsdn/article/details/102647286

王者荣耀皮肤获取

目标: 获取王者荣耀英雄皮肤及对应的皮肤链接保存到mysql数据库

目标地址

1. 抓包找到英雄列表, 通过requests请求获取英雄名, 英雄详情页, 皮肤数量, 存入mysql数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iNdxS5NZ-1571542578754)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571540090733.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9o5qYp9i-1571542578756)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571540159187.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQFJEdwq-1571542578756)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571540610485.png)]

3. 网页源代码里只有皮肤名称, 并没有皮肤链接 ,此时就需要和上一步得到的链接进行一一对应了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v6iCb4FC-1571542578757)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571541263283.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9sAuJSwj-1571542578758)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571541640427.png)]

4. 部分代码如下, 完整代码在github上可以获取

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
5. 后记: ①现在完全没有加密的网站已经很少了, 想做好爬虫的话就必须要有扎实的Python基础了, 就拿这个网站来说, 皮肤链接地址就是一个简简单单的拼接而已; ② 不要随随便便就使用selenium, 对学爬虫没有半点好处;

猜你喜欢

转载自blog.csdn.net/gklcsdn/article/details/102647286