python爬虫——爬取英雄联盟全英雄皮肤

爬取英雄联盟全英雄皮肤

import requests
import re

#1、分析目标网页,确定爬取的url路径,headers参数
base_url='https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js'
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36'}

#2、发送请求
response=requests.get(base_url,headers=headers)
base_data=response.json()

#3、抓取信息
base_data=str(base_data)
#抓取英雄ID
data_id=re.findall(r"heroId': '(.*?)', 'name",base_data)
for i in range(len(data_id)):
               item=data_id[i]
               #经分析,英雄的皮肤url位于id.js,因此构造以下网址
               hero_url='https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(item)
               response_hero=requests.get(hero_url,headers=headers)
               data_hero_detail=response_hero.json()
               #print(data_hero_detail)
               data_hero_detail=str(data_hero_detail)
               #抓取皮肤的url
               skin_url=re.findall(r"mainImg': '(.*?)', 'iconImg",data_hero_detail)
               #print(skin_url)
               #抓取皮肤的ID及英雄的名字
               skin_id=re.findall(r"skinId': '(.*?)', 'heroId",data_hero_detail)
               skin_name=re.findall(r"heroName': '(.*?)', 'heroTitle",data_hero_detail)
               #print(skin_id,skin_name)
               #遍历所有的皮肤url
               for skin_num in range(len(skin_url)):
                    skin_no=skin_url[skin_num]
                    #因为id.js文件内有空的皮肤URL,导致提取出来的网址存在空的,获取照片的时候会报错,所以用如下方式,跳过空的URL
                    try:
                        skin_img=requests.get(skin_no,headers=headers).content
                        with open('LOL_SKIN\\'+skin_name[skin_num]+'-'+skin_id[skin_num]+'.jpg','wb') as f:
                                print('正在下载图片:',skin_name[skin_num]+'-'+str(skin_id[skin_num]))
                                f.write(skin_img)
                    except Exception as e:
                        print(e)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值