# 面向对象编程(OOP)爬虫,爬取LOL的英雄皮肤

本文介绍如何运用面向对象编程(OOP)技术,爬取《英雄联盟》(LOL)中的英雄皮肤。首先,通过分析,找到英雄资料库并获取英雄详情。接着,通过浏览器开发者工具定位到皮肤图片的URL。然后,解析JS源代码以下载皮肤。最后,提供代码示例和思路解析,帮助读者理解整个过程。对于OOP不熟悉的同学,作者也愿意提供帮助。
摘要由CSDN通过智能技术生成

如果你是一名撸友,那么你对LOL英雄皮肤应该是相当的喜欢的,毕竟有些皮肤用起来会让我们的手感得心应手的。

我们先来看看僧哥的新皮肤

12192974-afa379cfb9083029.png

1.既然要拿取到英雄的皮肤,得先找英雄的资料库吧

12192974-255c0cdc5fa899de.png

2.点击资料库,查看英雄的详情,再右键点检查(随便点一个英雄)

12192974-1e8cb2ab739c8874.png
  • 点击箭头,移动到阿狸小姐姐的位置就可以看图片的网址啦,这一步是我们要获取皮肤的重要一步哦~

3.获取js的URL

  • 拿到js源代码,进行分析,再下载我们的英雄皮肤。
12192974-e6eda85739104601.png

4.分析这么多了,上源码。(从前面的分析,再结合源代码,理清好自己思路哈)

import requests
import re
import json


# 1.请求网站,获取数据
def path_js(url_js):
    req_js = requests.get(url_js).content.decode("gbk")
    req = '"keys":(.*?),"data"'
    req = re.compile(req)
    list_js = re.findall(req, req_js)
    dict_js = json.loads(list_js[0])
    return dict_js


# 2.拼接url
def path_url(dict_js):
    global hero_numbers
    pic_list = []
    for key in dict_js:
        for item in range(20):
            str_number = str(item)
            if len(str_number) == 1:
                hero_numbers = "00" + str_number
            elif len(str_number) == 2:
                hero_numbers = '0' + str_number
            numbers_t = key + hero_numbers
            url = " https://ossweb-img.qq.com/images/lol/web201310/skin/big" + numbers_t + '.jpg'   #  图片的URL
            pic_list.append(url)
    return pic_list


# 3.下载图片名称
def name_pic(dict_js, path):
    list_file_path = []
    for name in dict_js.values():
        for item in range(20):
            file_path = path + name + str(item) + '.jpg'
            list_file_path.append(file_path)
    # print(list_file_path)
    return list_file_path


# 4.下载图片
def download_pic(pic_list, list_file_path):
    for item in range(len(pic_list)):
        res = requests.get(pic_list[item], verify=True)
        if res.status_code == 200:
            print("正在下载%s" % list_file_path[item])
            with open(list_file_path[item], 'wb') as f:
                f.write(res.content)
    print("所有皮肤下载完成")

# 程序入口
if __name__ == '__main__':
    # js源代码
    url = 'https://lol.qq.com/biz/hero/champion.js'   #  获取champion.js的URL
    path = r".\\皮肤\\"

    # 1.请求网站,获取数据
    dict_js = path_js(url)
    # 2.拼接url
    url_list = path_url(dict_js)
    # 3.下载图片名称
    list_file_path = name_pic(dict_js, path)
    # 4.下载图片
    download_pic(url_list, list_file_path)
  • 效果图走一波(美滋滋)。。


    12192974-bbf7121f324cb838.png

--------------------------------------------------------分割线--------------------------------------------------------------

12192974-75504df27c9b6e54.png

--------------------------------------------------------分割线--------------------------------------------------------------

  • 高清大图
12192974-fb03b5ede61bb4d6.png

思路理清的小伙伴,抓紧代码撸起来
没有理清思路的小伙也不用着急哈,认真分析代码和讲解图。当然咯,也可以来问我哈~~~

关于面向对象编程不理解的小伙伴,大家可以私下来联系我,会为小伙伴一一解答。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值