欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

lol图片爬取

程序员文章站 2022-03-08 14:04:03
...

LOL英雄图片爬取

  • 附上url
    lol图片爬取
    这是我们要爬取的主页面
    lol图片爬取
    lol图片爬取
    通过上两个图可以看出,注意标注出的url, 这是每个英雄的详情页面的url地址,而每个英雄的页面的url不同的地方为id(这个id很重要),所以可以判断每个英雄都对应着一个自己的id。
    lol图片爬取
    而在每个英雄单独的页面中有每个皮肤的大图。
    lol图片爬取
    在1.js这个文件中,我们看到了每个皮肤图片的对应的url, 多观察几个页面,你会发现每个英雄的皮肤图片url所在的位置都在id.js中
    lol图片爬取
    通过上图,可以看到
  • url = ‘https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js’
  • 我们在{}中添加英雄的id即可
  • OK,现在大概思路已经得到了。
  • 首先获取到每个英雄对应的id
  • 然后拼接url
  • 对拼接后的url发送请求,得到json文件,然后取出图片url,下载每个皮肤的图片即可
    lol图片爬取
  • 然后在主页面中通过开发者工具我们挨个的寻找发现我们要找的英雄id在hero_list.js这个文件中
    lol图片爬取
  • 一个简单的get请求即可。那么我们现在就已经获取到了英雄id了,那么获取到英雄id后就可以进行下一步,拼接url,得到每个英雄对应的json文件,然后通过返回的json文件中得到图片的url即可下载,大致思路就是这样。
  • 贴上代码
import requests
from urllib.request import urlretrieve
from fake_useragent import UserAgent
import json
import os
ua = UserAgent()

headers = {
    'user - agent': ua.random
}
def get_id():
    url1 = 'https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
    hero_id_list = requests.get(url1, headers=headers).text
    hero_json = json.loads(hero_id_list)['hero']
    hero = {}
    for h in hero_json:
        hero[h['heroId']] = h['name'] + '_' + h['title']
    return hero

def get_img_url(url):
    res = requests.get(url, headers=headers).text
    img_json = json.loads(res)['skins']
    img = {}
    for i in img_json:
        name = i['name'].replace(' ', '_')
        img[name] = i['mainImg']
    return img

def dowmload_img(url, hero_name, skin_name):
    path = 'img//' + hero_name
    if not os.path.exists(path):
        os.makedirs(path)
    try:
        urlretrieve(url, path + '//' + skin_name + '.jpg')
    except:
        pass
    print('已下载' + hero_name + skin_name)


if __name__ == '__main__':
    hero = get_id()
    url2 = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'
    for h in hero:
        jsurl = url2.format(h)
        hero_name = hero[h]
        img_list = get_img_url(jsurl)
        for i in img_list:
            img_url = img_list[i]
            skin_name = i
            dowmload_img(img_url, hero_name, skin_name)