python爬虫入门 * 下载王者荣耀全皮肤(高清壁纸)

SunriseCai 2020-11-13 11:32:03
Python 爬虫 下载 入门 王者


此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。
本文章纯野生,无任何借鉴他人文章及抄袭等。

前言

  • 前面太啰嗦,建议直接观看攻略 (即代码)。
  • 近来初接触爬虫,总想着捣鼓一些小玩意。这不,有了这一篇文章。
  • 我敢打包票说,你肯定找不到另一篇关于王者荣耀下载高清壁纸的博文比这一篇更为详细。
  • 说到王者荣耀,相信大家都不会陌生 ,所以,本文章是讲解利用Python实现下载所有的王者荣耀的高清壁纸。

在这里插入图片描述

  • 记得前段时间,常常会听到,开黑吗?我露娜贼6?
  • 我的露娜确实也很不错,但是我的蔡文姬打野更胜一筹。

在这里插入图片描述

  • 闲聊完毕,下面要开始进入正题。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
本次分四个小点:

  • 未完成)开始游戏
  • 未完成)拿下一血 First Blood
  • 未完成)成功超神 Legendary
  • 未完成)摧毁敌方水晶 Victory

1. 开始游戏

  • 欢迎来到王者荣耀,敌军还有五秒到达战场
  1. 首先用浏览器打开王者荣耀官方网站,点击游戏壁纸
    在这里插入图片描述

  2. 进入壁纸界面后,看到页面的新英雄新皮肤4张壁纸,高清壁纸20张壁纸,并且有多页壁纸,这里需要下载的是高清壁纸。壁纸共有20页,每页有20个壁纸。即20*20=400张壁纸。
    在这里插入图片描述
    在这里插入图片描述

  3. 开始游戏了,看看如何去取得一血(First Blood)。

2. 拿下一血 First Blood

  1. 看到源码这里,p_newhero_item 这一个类对应了页面的高清壁纸。刚好20个类和20张壁纸
    在这里插入图片描述

  2. 点击一下貂蝉该壁纸,发现它有7种不同大小的尺寸或说是分辨率。再看到右边的源码,对应尺寸的图片链接都在里源码里面了。那7个尺寸的壁纸共就400*7=2800张了。
    在这里插入图片描述

  3. 这里随意点击了一张壁纸的链接,发现页面跳转到对应尺寸的图片。
    在这里插入图片描述

  4. 初战告捷,成功拿下一血。
    在这里插入图片描述

  • 现在已经知道了图片的链接(即url)是如何获取的,那接下来就看一看他的不同页面之间有什么规律。

3. 成功超神 Legendary

  1. 前面5页的url如下,url已经做过了一些处理,去掉了部分不影响访问的数据。
第一页 https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page=19&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735
第二页 https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=1&page=19&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735
第三页 https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=2&page=19&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735
第四页 https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=3&page=19&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735
第五页 https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=4&page=19&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735
  1. 通过上面的5个url可以得出规律,url的变化点在page这里,第一页为0,每递增一页的page则 +1
  2. 来看看链接是如何获取到的。在页面打开开发者工具。每点击下一页,便会出现31个数据包。其中有1个为页面的链接,剩下的30个皆为壁纸缩略图的数据包。

在这里插入图片描述

  1. 到这里已经成功超神,因为对网站的解析已经完成了。任务也就完成80%了。

在这里插入图片描述

  • 接下来到推塔部分了,就是要写代码了。

4. 摧毁地方水晶 Victory

  • 到了这里,胜负快要分晓了。
  • 看完祭出终极攻略,干翻他们。

4.1 完整攻略

攻略这里可能不是描述的那么详细,但是实践出真知嘛。如果你不行(对!就是不行),可以在下方留言或者给我私信哈。

这里放出一个王者荣耀壁纸尺寸图片链接的对应关系。

  • 通过观看下表可以发现,url的变化在.jpg 前面的数字,
  • 随着壁纸尺寸的增长,链接中对应的数字就递增的+1
  • 别问我是如何发现这个规律的,问就是找了两个多小时。
壁纸尺寸 图片链接
1024x768 http://shp.qpic.cn/ishow/xxx_sProdImgNo_2.jpg/0
1280x720 http://shp.qpic.cn/ishow/xxx_sProdImgNo_3.jpg/0
1280x1024 http://shp.qpic.cn/ishow/xxx_sProdImgNo_4.jpg/0
1440x900 http://shp.qpic.cn/ishow/xxx_sProdImgNo_5.jpg/0
1920x1080 http://shp.qpic.cn/ishow/xxx_sProdImgNo_6.jpg/0
1920x1200 http://shp.qpic.cn/ishow/xxx_sProdImgNo_7.jpg/0
1920x1440 http://shp.qpic.cn/ishow/xxx_sProdImgNo_8.jpg/0
# -*- coding: utf-8 -*-
# @Time : 2020/1/9 18:13
# @User : Admin
# @Author : SunriseCai
# @File : Wangzherongyao_spider.py
# @IDE : PyCharm
import json
import requests
from queue import Queue
from urllib import parse
class DownloadPicture(object):
def __init__(self):
self.Pageurl = 'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&s' \
'DataType=JSON&iListNum=20&totalpage=0&page={}&iOrder=0&iSortNumClose=1&jsoncallback=&iAMSActivityId=51991' \
'&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735'
self.headers = {

'Referer': 'https://pvp.qq.com/web201605/wallpaper.shtml',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'
}
self.q_ = Queue()
self.picture_url_list = []
self.size_num_contrast = ['1024x768', '1280x720', '1280x1024', '1440x900', '1920x1080', '1920x1200',
'1920x1440']
# 获取所有页面的链接
def get_page_url(self):
for page in range(1):
print(self.Pageurl.format(page))
self.get_picture_url(self.Pageurl.format(page))
def get_picture_url(self, Pageurl):
res = requests.get(url=Pageurl, headers=self.headers)
res = json.loads(res.text)
for data in res['List']:
name = parse.unquote(data['sProdName'])
for num in range(2, 9):
self.picture_url_list.append(parse.unquote(data['sProdImgNo_{}'.format(num)])[:-3] + '0')
self.q_.put([name, self.picture_url_list])
self.picture_url_list = []
def download_picture(self):
while True:
if not self.q_.empty():
url_data = self.q_.get()
name = url_data[0]
for picture_url, size in zip(url_data[1], self.size_num_contrast):
resp = requests.get(picture_url, headers=self.headers)
with open('%s_%s.jpg' % (name, size), 'wb') as f:
f.write(resp.content)
f.close()
print('图片:%s_%s.jpg 下载成功' % (name, size))
else:
break
def main(self):
self.get_page_url()
self.download_picture()
if __name__ == '__main__':
spider = DownloadPicture()
spider.main()
  • 至此,游戏通关。已摧毁对方水晶。

幸不辱命,本次攻略将地方杀的片甲不留,已成功拿下比赛。

  • 已完成)开始游戏
  • 已完成)拿下一血 First Blood
  • 已完成)成功超神 Legendary
  • 已完成)摧毁敌方水晶 Victory

在这里插入图片描述

  • 来看一下攻陷对方水晶后的战利品。怎么样,有意思吧!!

在这里插入图片描述
最后祝愿各位玩家都可以升到那传说中的嘴强王者,也欢迎大家和我一起开黑哦。我蔡文姬打野賊6
在这里插入图片描述

5.结语

本次王者荣耀高清壁纸下载属于一个简单的程序,在代码实现过程中没有遇到问题。

你还楞再这里做什么??赶紧复制黏贴代码去执行啊!

好了,本次的分享到这里结束。

有任何疑问欢迎在下方留言哦。

版权声明
本文为[SunriseCai]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45081575/article/details/103914041

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database