admin管理员组文章数量:1317614
目录
最近总是有老妹喊我打王者带她们上分,但是我吧不经常玩,有哪些皮肤,叫什么名字,长啥样都不知道,万一妹妹问起来答不上岂不是很尴尬!
这不得先把功课做足了,于是我用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/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/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/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,大家可以自己试试看,需要获取源码的话,看主页加python教程群免费领取
作者:静默虚空
版权声明:本文标题:Python一键获取某排名第一的手游,所有英雄皮肤(附源码) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1737955918a2040810.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论