英雄联盟皮肤图片爬取

文章目录

    • 思路分析
    • 完整代码
    • 效果展示

思路分析

首先,进入英雄联盟的官网资料站。
英雄联盟皮肤图片爬取_第1张图片
通过抓包分析,我们可以得到每个英雄的ID。
英雄联盟皮肤图片爬取_第2张图片
英雄联盟皮肤图片爬取_第3张图片
随便找个英雄点开,进入详情页面。

查看页面的源代码,我们可以定位到图片的URL链接。
英雄联盟皮肤图片爬取_第4张图片
但是这些图片的URL链接都是通过js加载的,我们直接请求这个页面是找不到的,于是,继续进行抓包分析。
英雄联盟皮肤图片爬取_第5张图片
英雄联盟皮肤图片爬取_第6张图片
找到图片的URL链接后,我们就可以开始写代码爬取图片了。

完整代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/1/29 9:44
# @Author:  Martin
# @File:    lol_skin.py
# @Software:PyCharm
import requests
import json
import os
url1 = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
raw_url2 = 'https://game.gtimg.cn/images/lol/act/img/js/hero/%s.js'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
r = requests.get(url1, headers=headers)
hero = json.loads(r.text)['hero']
for it in hero:
    heroId = it['heroId']
    name = it['name']
    url2 = raw_url2 % heroId
    response = requests.get(url2, headers=headers)
    skin_data = json.loads(response.text)['skins']
    i = 1
    for item in skin_data:
        if item['mainImg'] != "":
            skin_url = item['mainImg']
            if not os.path.exists('./result/LoLSkin/'+name):
                os.makedirs('./result/LoLSkin/'+name)
            result = requests.get(skin_url, headers=headers)
            with open('./result/LoLSkin/'+name+'/'+name+str(i)+'.jpg', 'wb') as f:
                f.write(result.content)
                print(name+str(i))
                i += 1

效果展示

英雄联盟皮肤图片爬取_第7张图片
英雄联盟皮肤图片爬取_第8张图片
英雄联盟皮肤图片爬取_第9张图片

你可能感兴趣的:(Web,Crawler)