用Python3Request爬取英雄联盟皮肤、单线程爬取

和王者荣耀相类似

链接:https://www.cnblogs.com/wxzbk/p/10981098.html

"""
Hero_LOL
"""
import requests
import re
import threading

def hero(hero_name, hero_num):
    #统一前戳
    h_l = "https://ossweb-img.qq.com/images/lol/web201310/skin/big"
    # 逐一遍历英雄
    print(hero_num.__len__())
    num = 0  # 为了获取英雄的号码
    for i in hero_num:
        # 逐一遍历皮肤,此处假定一个英雄最多15个皮肤
        for sk_num in range(0, 20):  # 从第一个开始,没有第0个皮肤
            if len(i)==2:
                hsl = h_l + i + "0" +str(sk_num) +".jpg"
            else:
                hsl = h_l + i + "00" + str(sk_num) + ".jpg"
            hl = requests.get(hsl)
            if hl.status_code == 200:
                filename = "LOL/" + str(hero_name[num]) + str(sk_num) + ".jpg"
                print("此时正在下载:" + filename)
                with open(filename, "wb") as f:
                    f.write(hl.content)
            else:
                break
        num += 1

def main():
    """
    #获取全部英雄数据
    :return:
    """
    #JS_url
    Hero_url =  "https://lol.qq.com/biz/hero/champion.js"
    #User-Agent伪装浏览器标识
    header = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36‘}
    #Get source code(获取源代码)
    response = requests.get(Hero_url,headers = header)
    #decode 编码为GBK,方便下方使用正则遍历
    response = response.content.decode("GBK")
    #regex(正则表达式)
    reg = """keys":([\s\S]*?),"data"""
    #预编译
    regex = re.compile(reg,re.IGNORECASE) #第一个参数 正则表达式 第二个参数忽略的意思,忽略大小写
    #findall 就是获取response内所有符合规则的数据,返回值为list
    response_s = regex.findall(response)
    #也就是所有符合规则的数据放到了列表里,如果只有一个,那就是list[0]
    response_s = response_s[0]
    #通过eval转换为一个dict,具体功能自己查(其实我也没大懂)
    res = eval(response_s)
    #get the keys in the dict(再转换为list)
    hero_num  = list(res.keys()) #Hero_number
    #get the values in the dict (再转换为list)
    hero_name = list(res.values())#Hero_name

    hero(hero_name,hero_num)
    t1 = threading.Thread(target=hero,args=(hero_name,hero_num))
    t1.start()

if __name__ == ‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/wxzbk/p/10983976.html

时间: 2024-10-05 21:19:50

用Python3Request爬取英雄联盟皮肤、单线程爬取的相关文章

Python下载英雄联盟皮肤图片

import urllib.requestimport jsonimport os save_dir = "D:\英雄联盟皮肤"if not os.path.exists(save_dir): os.mkdir(save_dir) for i in range(99,143): for cnt in range(0,9): #save_file_name = "D:\英雄联盟皮肤\\" +str(hero_json[i]['ename'])+'-'+ hero_js

爬取英雄联盟所有英雄皮肤

我们通过分析英雄联盟官网页面,进入到资料库页面,分析英雄所在的页面 这里有两种类型的同样的图片,一种是大图片的,一种是类似头像的小图片.我们这里抓取大图片 拿到几种图片链接分析https://game.gtimg.cn/images/lol/act/img/skin/big5000.jpg可以发现所有英雄皮肤链接url除了数字之前的都一样,而且后面的数字都是以英雄id+三位数拼接而成(三位数从000开始,但是有的英雄并不是就是依次排列,可能000,,001,002会直接跳到013) 由于英雄联盟

爬虫小程序(爬取英雄联盟的英雄皮肤)

一.爬虫流程: 1.明确目标:url = https://daoju.qq.com/lol/list/17-0-0-0-0-0-0-0-0-0-0-00-0-0-1-1.shtml?ADTAG=innercop.lol.SY.shoppinglist_new_17 2.判断数据类型:动态/静态(这里是动态类型,是通过JS渲染的) 备注:如何来判断数据类型?是通过源码来判断的,如果网页源码中可以找到我们需要爬取的数据,那么就代表是静态,可以通过访问网页后结合正则就可以获取数据, 如果网页源码找不到

基于cocos2d-x的英雄联盟皮肤选择菜单

最终效果图 英雄联盟皮肤选择 设计说明 实现目标所需要的动作 移动(MoveTo),伸缩(ScaleTo),倾斜(OrbitCamera) 实现目标所需要函数(这是一个数学函数) x/(x+a) 其中a为常量,用来计算上面三个动作的值 大小 与原版Menu不同,大小不是全屏的,默认是屏幕的(2/3),可以通过setContentSize()函数设置 _index变量 将所有的菜单项平铺构成一个长方形,_index表示目前在中间位置的点,如下图 显示方式 将菜单项距中心的距离(i-_indxe)作

用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!

英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过"真香定理",在2018年的中旬,又有大批战友又回到熟悉的召唤师峡谷战场,时至今日,英雄联盟已经不仅仅是一款游戏,一个电竞项目了,它已经成为了我们生活的快乐源泉了. 问君能有几多愁,辅助闪现抢人头:问君能有几多愁,卡牌千里送人头.问君能有几多愁,皇子开大关队友:清明时节雨纷纷,各种队友各种

记一次 爬取LOL全皮肤原画保存到本地的实例

1 #爬取lol全英雄皮肤 2 import re 3 import traceback # 异常跟踪 4 import requests 5 from bs4 import BeautifulSoup 6 #获取html 7 def get_url(url, hander): 8 try: 9 r = requests.get(url, headers=hander, timeout=30) 10 r.raise_for_status() 11 r.encoding = r.apparent_

英雄联盟模型查看器

本人非常喜欢英雄联盟这个游戏,希望英雄联盟也能出个类似war3的世界编辑器那样的工具,可以利用英雄联盟的场景和模型制作自定义游戏.可是,官方是不太可能出这种工具的.于是,萌生了个制作英雄联盟世界编辑器的想法. 想制作类似世界编辑器的工具,第一步是要提取英雄联盟中英雄的模型和动画. 在网上搜索有关英雄联盟的资料,偶然间发现了lolking这个网站,上面提供了所有英雄(包含全皮肤)和中立生物的模型和动画,我感觉我都第一步就要完成了. 费了一周的时间,制作了英雄联盟模型查看器. 下面给出英雄联盟模型查

【bzoj5018】[Snoi2017]英雄联盟 背包dp

题目描述 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄,因此,他也只准备给这N个英雄买皮肤,并且决定,以后只玩有皮肤的英雄.这N个英雄中,第i个英雄有Ki款皮肤,价格是每款CiQ币(同一个英雄的皮肤价格相同).为了让自己看起来高大上一些,小皮球决定给同学们展示一下自己的皮肤,展示的思路是这样的:对于有皮肤的每一个英雄,随便选一个皮肤给同学看.比如,小皮球共有5个英雄,

【BZOJ5018】[Snoi2017]英雄联盟 背包

[BZOJ5018][Snoi2017]英雄联盟 Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄,因此,他也只准备给这N个英雄买皮肤,并且决定,以后只玩有皮肤的英雄.这N个英雄中,第i个英雄有Ki款皮肤,价格是每款CiQ币(同一个英雄的皮肤价格相同).为了让自己看起来高大上一些,小皮球决定给同学们展示一下自己的皮肤,展示的思路是这样的:对于有皮肤