美文网首页Python新世界python热爱者
python爬取英雄联盟官网,获取所有英雄与皮肤!

python爬取英雄联盟官网,获取所有英雄与皮肤!

作者: 48e0a32026ae | 来源:发表于2018-11-11 16:11 被阅读47次

    起因:练习一下python,看到有人爬取王者荣耀的皮肤,我也来练练手。

    首先查看英雄联盟英雄界面的js,还有英雄的js以及皮肤图片的url。这里我们可以看到英雄的列表是在

    http://lol.qq.com/biz/hero/champion.js 中

    学习Python中有不明白推荐加入交流群

                    号:516107834

                    群里有志同道合的小伙伴,互帮互助,

                    群里有不错的学习教程!

    进入英雄界面,并查看元素

    这里我们可以看到图片的

    http://osswebimg.qq.com/images/lol/web201310/skin/big266001.jpg在这里图片的id是266001

    其中266为英雄的id,而001指的是第一个。

    在观察页面元素看到安妮的皮肤id和名称是在

    http://lol.qq.com/biz/hero/Annie.js

    中,至此完成了皮肤id和皮肤名称的获取。

    现在开始说明思路:

    获取英雄的列表。

    # 获取英雄联盟英雄列表

    response = urllib.request.urlopen(

    "http://lol.qq.com/biz/hero/champion.js")

    data = response.read().decode('utf-8')

    json1 = re.findall(r"LOLherojs.champion=(.+?);", data)

    hero_json = json.loads(json1[0])['keys']

    获取英雄的皮肤id和名字。

    c = []

    for key in hero_json:

    # print("****key--:%s value--: %s" % (key, hero_json[key]))

    url_skin = "http://lol.qq.com/biz/hero/" + hero_json[key] + ".js"

    c.append(url_skin)

    拼接出图片的url并下载。

    urlDown = "http://ossweb-img.qq.com/images/lol/web201310/skin/big" + imgId + ".jpg"

    下面是全部的代码

    # 代码片段1

    import urllib.request

    import json

    import os

    import pathlib

    import re

    from bs4 import BeautifulSoup

    # 获取ID和name,并下载

    def json_txt(jsonSkinSJSON, defalut):

    jsonSkinSJSON = jsonSkinSJSON["data"]["skins"]

    i = 0

    imgId = ""

    imgName = ""

    for key in jsonSkinSJSON:

    if i == 0:

    # print(key["id"])

    imgId = key["id"]

    # print(defalut)

    imgName = defalut

    i = i + 1

    else:

    imgId = key["id"]

    imgName = key["name"]

    save_dir = 'D:LOLheroskin\'

    save_file_name = save_dir + imgName + ".jpg"

    urlDown = "http://ossweb-img.qq.com/images/lol/web201310/skin/big" + imgId + ".jpg"

    # print(urlDown)

    try:

    if not os.path.exists(save_file_name):

    urllib.request.urlretrieve(urlDown, save_file_name)

    except Exception:

    print("下载失败")

    # 获取英雄联盟皮肤

    def getSkins(urlOne):

    response = urllib.request.urlopen(

    urlOne)

    data = response.read().decode('utf-8')

    # print(data)

    jsonSkin = re.findall(r"{"data":(.+?);", data)

    jsonSkinS = "{"data":" + jsonSkin[0]

    jsonSkinSJSON = json.loads(jsonSkinS)

    # print(jsonSkinSJSON["data"]["name"])

    defalut = jsonSkinSJSON["data"]["name"]

    json_txt(jsonSkinSJSON, defalut)

    # 获取英雄联盟英雄列表

    response = urllib.request.urlopen(

    "http://lol.qq.com/biz/hero/champion.js")

    data = response.read().decode('utf-8')

    json1 = re.findall(r"LOLherojs.champion=(.+?);", data)

    hero_json = json.loads(json1[0])['keys']

    c = []

    for key in hero_json:

    # print("****key--:%s value--: %s" % (key, hero_json[key]))

    url_skin = "http://lol.qq.com/biz/hero/" + hero_json[key] + ".js"

    c.append(url_skin)

    # 文件夹不存在则创建

    save_dir = 'D:LOLheroskin\'

    if not os.path.exists(save_dir):

    os.mkdir(save_dir)

    for heroOne in c:

    getSkins(heroOne)

    print("下载完成")

    相关文章

      网友评论

        本文标题:python爬取英雄联盟官网,获取所有英雄与皮肤!

        本文链接:https://www.haomeiwen.com/subject/rcoxfqtx.html