2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python爬取英雄联盟所有皮肤_python爬取lol英雄皮肤

python爬取英雄联盟所有皮肤_python爬取lol英雄皮肤

时间:2019-02-03 08:54:13

相关推荐

python爬取英雄联盟所有皮肤_python爬取lol英雄皮肤

[Python] 纯文本查看 复制代码import json

import os

import re

import random

import requests

from requests.exceptions import RequestException

# 本地保存地址

base_path = 'D:\\lol_hero_skin'

# 人机识别信息

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/80.0.3987.122 Safari/537.36'}

# 处理文件名,window系统下有些字符不允许出现\/:*?"<>| K\DA皮肤引起此问题

def handle_str(_str):

temp = re.sub('[\\\/:*?"<>|]', '', _str)

if len(temp) == 0:

return ''.join(str(random.choice(range(10))) for _ in range(10))

return temp

# 下载图片

def download_img(img_url, _base_path, name):

r = requests.get(img_url, headers=headers, stream=True)

print(name, r.status_code) # 返回状态码

if r.status_code == 200:

name = handle_str(name)

open(_base_path + "\\" + name + '.jpg', 'wb').write(r.content) # 将内容写入图片

print("done")

del r

def load_hero_skin(heroId):

hero_img_url_prefix = '/images/lol/act/img/js/hero/'

hero_img_url_suffix = '.js'

response = requests.get(hero_img_url_prefix + heroId + hero_img_url_suffix, headers=headers)

html = json.loads(response.text) # 将网页内容以json返回

skinsList = html.get('skins') # 皮肤列表

heroName = html.get('hero').get('name') # 黑暗之女

heroTitle = html.get('hero').get('title') # 安妮

heroName = handle_str(heroName)

heroTitle = handle_str(heroTitle)

hero_skins_path = base_path + '\\' + heroName + ' ' + heroTitle

if not os.path.exists(hero_skins_path):

print('不存在,创建中。。。')

os.makedirs(hero_skins_path, 755)

for n in skinsList:

skinName = n.get('name')

_chromas = n.get('chromas') # 0:是基础、1:炫彩

mainImg = n.get('mainImg') # 皮肤图片地址

# print(skinName)

# print(_chromas)

# print(mainImg)

if _chromas == '0':

# 下载该图片

download_img(mainImg, hero_skins_path, skinName)

# 获取全部英雄对象json

def get_hero_json():

try:

hero_list_url = '/images/lol/act/img/js/heroList/hero_list.js'

response = requests.get(hero_list_url, headers=headers)

html = json.loads(response.text) # 将网页内容以json返回

print('版本:', html.get('version'))

print('文件名:', html.get('fileName'))

print('文件更新时间:', html.get('fileTime'))

print('总英雄数量:', len(html.get('hero')))

for i in html.get('hero'):

heroId = i.get('heroId')

load_hero_skin(heroId)

except RequestException:

return None

def main():

get_hero_json()

# 当.py文件被直接运行时,当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

if __name__ == '__main__':

main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。