王者荣耀高清壁纸脚本Python文件

网上查的不能运行,自己修改后,顺利执行,获取王者荣耀的所有高清壁纸,如果不能运行,请评论或者私信给我,配环境是个麻烦事,建议Python3.0以上执行,很爽!

"""
  抓取王者荣耀皮肤
  author: AirZilong
  date: 2018-12-17
  """

import requests
from bs4 import BeautifulSoup
from urllib import parse
import os


class Skin(object):
  def __init__(self):
    # 英雄的json数据
    self.hero_url = 'https://pvp.qq.com/web201605/js/herolist.json'
    # 英雄详细页的通用url前缀信息
    self.base_url = 'https://pvp.qq.com/web201605/herodetail/'
    # 英雄详细页url后缀信息
    self.detail_url = ''
    # 图片存储文件夹
    self.img_folder = 'skin'
    # 图片url的通用前缀
    self.skin_url = 'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/'
    # 图片url的后缀信息
    self.skin_detail_url = ''

  def get_hero(self):
    """获取英雄的json数据"""
    request = requests.get(self.hero_url)
    hero_list = request.json()
    return hero_list

  def get_hero_skin(self, hero_name, hero_no):
    """获取详细页英雄皮肤展示的信息,并爬图"""
    url = parse.urljoin(self.base_url, self.detail_url)
    request = requests.get(url)
    request.encoding = 'gbk'
    html = request.text
    # 获取皮肤信息的节点
    soup = BeautifulSoup(html, 'html.parser')
    skip_list = soup.select('.pic-pf-list3')
    for skin_info in skip_list:
      # 获取皮肤名称
      img_names = skin_info.attrs['data-imgname']
      name_list = img_names.split('|')
      skin_no = 1
      # 循环下载皮肤图片
      for skin_name in name_list:
        self.skin_detail_url = '%s/%s-bigskin-%s.jpg' % (hero_no, hero_no, skin_no)
        skin_no += 1
        img_name = hero_name + '-' + skin_name + '.jpg'
        self.download_skin(img_name)

  def download_skin(self, img_name):
    """下载皮肤图片"""
    img_url = parse.urljoin(self.skin_url, self.skin_detail_url)
    request = requests.get(img_url)
    if request.status_code == 200:
      print('download-%s' % img_name)
      img_path = os.path.join(self.img_folder, img_name)
      with open(img_path, 'wb') as img:
        img.write(request.content)
    else:
      print('img error!')
  def make_folder(self):
    """创建图片存储文件夹"""
    if not os.path.exists(self.img_folder):
      os.mkdir(self.img_folder)
  def run(self):
    """脚本执行入口"""
    self.make_folder()
    hero_list = self.get_hero()
    for hero in hero_list:
      hero_no = str(hero['ename'])
      self.detail_url = hero_no + '.shtml'
      hero_name = hero['cname']
      self.get_hero_skin(hero_name, hero_no)


# 程序执行入口
if __name__ == '__main__':
    skin = Skin()
    skin.run()

如果转载请注明转于:AirZilong的博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值