VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 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,大家可以自己试试看,需要获取源码的话,看主页加群免费领取

作者:静默虚空

处:https://www.cnblogs.com/hahaa/p/15167062.html



相关教程