• Python一键获取某排名第一的手游,所有英雄皮肤(附源码)


    最近总是有老妹喊我打王者带她们上分,但是我吧不经常玩,有哪些皮肤,叫什么名字,长啥样都不知道,万一妹妹问起来答不上岂不是很尴尬!

    这不得先把功课做足了,于是我用Python把这些皮肤全部给爬下来了!分享给大家一起做功课~

    很多小伙伴因为在学习的过程中遇到很多问题没人指导都解决不了,或者因为没有好的学习资料学习路线,等等导致自己学不下去了,所以我准备了一个群,大家都可以加一下,里面都是志同道合的同学,这些资料也都是统统可以免费领取到,也会有老师不定时解答!点我加群免费领取

    Python 环境、pycharm编辑器/永久激活/翻译插件
    python 零基础视频教程
    Python 界面开发实战教程
    Python 爬虫实战教程
    Python 数据分析实战教程
    python 游戏开发实战教程
    Python 电子书100本
    Python 学习路线规划
    都可以加群免费领取
    Python 相关问题可解答
    Python 相关外包需求可发布
    Python 相关招聘需求可发布
    
    先来看看今天要用到的
    开发环境以及模块使用
    python 3.6
    pycharm >>> 安装包 / 安装教程 / 激活码[专业版] / pycharm插件 [翻译插件]
    强烈推荐 使用pycharm编辑器 *******
    requests  >>>  pip install requests
    re >>> 内置模块 不需要安装
    os >>> 内置模块
    
    如何安装模块:
    1.win + R 输入 cmd  输入安装命令: pip install 模块名 回车
    2.pycharm里面安装 terminal 输入安装命令: pip install 模块名 回车
    
    模块安装失败的原因:
    1. 提示:pip 不是内部命令 
        你python环境变量可能没有设置好
    2. 有安装进度条显示,但是安装到一半出现报错了
        因为python安装模块都是在国外的网址进行下载安装的, 国内请求国外 网速很慢,下载速度大概只有 几KB
        read time out 网络连接超时  你可以切换为国内的镜像源
    3. 明明在cmd里面安装好了,但是在pycharm 提示我没有这个模块
        你pycharm里面python解释器没有设置,你在pycharm设置里面重新设置一下
    
    Python能做什么? 学习方向是什么样? 很多小伙伴, 学习python之后不知道做什么~
    如果没有一个方向, 学python相关知识点 就会很乱
    1.黑客
    2.人工智能
    3.数据挖掘
    4.游戏开发
    5.数据可视化
    6.自动化
    7.web后端开发
    8.爬虫
    9.小程序开发 [分为前端[页面] 后端[功能]]
    10.app 可以做 不适合
    

    本节爬虫基本思路:

    一. 数据来源的分析
    1. 确定需求 (我要爬取什么内容)
    2. 通过开发者工具进行抓包分析
        图片 / 如果你有获取 网站url ID 视频ID 音频ID
        图片ID 里面一个参数 是实时更新变化  sign 找js
    
    二. 代码实现
    1.发送请求 对于英雄列表数据包发送请求
    2.获取数据 获取json字典数据 response.json()
    3.解析数据 json数据直接解析 获取 英雄ID 以及 英雄名字
    4.发送请求 请求英雄的详情页
    5.获取数据 获取网页源代码 response.text
    6.解析数据 通过re正则表达式 提取皮肤名字
    7.进行简单处理
    8.保存数据
    

    OK那开始今天的正式内容吧,先看看模块

    import requests  # 数据请求 第三方模块 pip install requests
    import pprint  # 格式化输出的模块
    import re  # 正则表达式模块 内置模块
    import os
    # 发送请求
    # 请求方式是什么样的? get请求 post请求
    # get: 是从服务器上面你直接获取数据 可以在url上面看到请求参数
    # post: 向服务器提交数据 提交一个from data 表单数据 登录都是post 有安全性
    # 看不到请求参数 [开发者工具看]
    # 请求头 headers : 把python代码伪装成浏览器
    # user-agent: 浏览器的基本信息 字典的形式

    url地址直接复制过来

    url = 'https://pvp.qq.com/web201605/js/herolist.json'

    headers 也是复制

    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
    }

    这样代码就要自己敲了

    response = requests.get(url=url, headers=headers)
    json_data = response.json()

    [] 表示列表 可以遍历

    for index in json_data:
        # json字典数据 直接解析取值 键值对取值,
        # 根据冒号左边的内容 提取冒号右边的内容
        hero_name = index['cname']
        hero_id = index['ename']
        filename = f'{hero_name}\'
        if not os.path.exists(filename):
            os.mkdir(filename)

    字符串格式化方法

    index_url = f'https://pvp.qq.com/web201605/herodetail/{hero_id}.shtml'
        response_1 = requests.get(url=index_url, headers=headers)

    自动转码...自动识别编码

    response_1.encoding = response_1.apparent_encoding

    () 精确匹配 表达的括号里面的内容是我想要的呀
    正则匹配出来的内容 是 列表 [0] 取列表里面第一个元素 0 索引位置

    skin_name = re.findall('data-imgname="(.*?)">', response_1.text)[0]

    &0 d 是匹配一个数字 d+ 匹配一个或者多个数字

    skin_name = re.sub('&d+', '', skin_name).split('|')

    len() 统计列表元素个数 3个元素 左闭右开

       for link in range(1, len(skin_name) + 1):
            # 因为皮肤图片url
            link_name = skin_name[link - 1]
            link_url = f'https://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{hero_id}/{hero_id}-bigskin-{link}.jpg'
            # 获取图片的二进制数据
            img_content = requests.get(url=link_url, headers=headers).content
            with open(filename + link_name + '.jpg', mode='wb') as f:
                f.write(img_content)
                print(f'{link_name}保存成功.....')

    ok,大家可以自己试试看,需要获取源码的话,看主页加群免费领取

  • 相关阅读:
    NOIP前的一些计划
    回文自动机[学习笔记]
    Luogu-3705 [SDOI2017]新生舞会
    01分数规划[学习笔记]
    jvm参数总结
    读懂jstack
    PRODUCER配置加载
    为什么WAIT必须在同步块中
    NIO学习笔记
    dp求最长递增子序列并输出
  • 原文地址:https://www.cnblogs.com/hahaa/p/15167062.html
Copyright © 2020-2023  润新知