使用python爬取王者荣耀的英雄皮肤

本文介绍了如何使用Python编写爬虫,通过VScode环境和命令行工具,抓取王者荣耀的英雄皮肤信息,包括英雄json数据获取、皮肤详情页爬取和图片下载存储的过程。
摘要由CSDN通过智能技术生成

1.搭建环境

首先在菜鸟教程官网按照python3.12稳定版,下载VScode

win+r打开命令行,输入cmd,打开windons终端,按照几个必要的插件工具

2,使用源码直接爬

源码如下

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

抓取王者荣耀皮肤

author: gxcuizy

date: 2018-11-06

"""

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, 'lxml')

        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()

爬取结果如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值