王者壁纸批量爬取

语言:python

json格式网站

爬取网址:王者荣耀壁纸下载-王者荣耀官方网站-腾讯游戏

思路分析

分析下一页,发现下一页之后是在当前页面的局部重新加载

当然排除可以直接爬取目标url获取当前页面的信息以及后面的所有目标图像的链接

打开谷歌浏览器自带的调试工具,抓包

 然后咱们清除所有记录,刷新第二页

你很清楚的看到一共有三次请求,第二次请求就是这几张壁纸,不难推测出第一次请求有我们想要的答案,打开第一个包,并分析他的响应,打开分析json工具,格式化

 这里有明显需要进行url解码,进行Unicode转中文,发现有二进制内容再进行中文转Unicode(其实我也不懂为啥需要再进行中文转Unicode才可以把皮肤名搞出来),之后结果就是这样

 

 然后很清晰目标url,以及壁纸的名称都有了,然后一看正好是一页的全部壁纸的

目标壁纸的URL已经发现是在请求包里面,现在无非分析请求URL有什么不同

随便打开两页的请求js的载荷

 可以看出有个量为page正好对应页码且变换页码也就这个值在发生改变(_:也在改变但是不重要可以舍弃)那么目标请求的URL可以得出。

完整思路:

对含壁纸名称和壁纸URL的URL发起请求 —>得到含壁纸名称和壁纸URL的js包—>对包内数据进行处理得到一个包含名称和url的列表—>对列表内url发起请求得到二进制数据—>保存数据

代码实现:

得到目标URL序列:

    link = []for i in range(0,10):urllib = "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={}&iOrder=0&iSortNumClose=1&jsoncallback=jQuery171008024345318143489_1643000887986&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735".format(str(i))head = {"user-agent": "",#UA伪装"cookie":"",#自己的cookie值"referer": "https://pvp.qq.com/"}reponse = requests.get(urllib, headers=head).textreponse = parse.unquote(reponse)imglink = re.findall('"sProdImgNo_3":"(.*?)200"', reponse)name = re.findall('"sProdName":"(.*?)"', reponse)for i in range(len(name)):dirt = {"img":imglink[i]+"0","name":name[i]}link.append(dirt)

对目标URL进行访问,且保存二进制图片

 print(dirt['name'],"正在下载……")url = dirt['img']head = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}async  with aiohttp.ClientSession() as session :async with await session.get(url,headers = head) as reponse:img = await reponse.read()with open("./王者荣耀/"+dirt['name']+".jpg","wb") as op:op.write(img)print(dirt['name'],"下载完毕!!!")

完整代码(为了提高速度使用了多任务异步):

import re
import requests
import aiohttp
import asyncio
from urllib import parse
def getLink():link = []for i in range(0,10):urllib = "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={}&iOrder=0&iSortNumClose=1&jsoncallback=jQuery171008024345318143489_1643000887986&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735".format(str(i))head = {"user-agent": "",#UA伪装"cookie":"",#自己的cookie值"referer": "https://pvp.qq.com/"}reponse = requests.get(urllib, headers=head).textreponse = parse.unquote(reponse)imglink = re.findall('"sProdImgNo_3":"(.*?)200"', reponse)name = re.findall('"sProdName":"(.*?)"', reponse)for i in range(len(name)):dirt = {"img":imglink[i]+"0","name":name[i]}link.append(dirt)return link
async def askUrl(dirt):print(dirt['name'],"正在下载……")url = dirt['img']head = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"}async  with aiohttp.ClientSession() as session :async with await session.get(url,headers = head) as reponse:img = await reponse.read()with open("./王者荣耀/"+dirt['name']+".jpg","wb") as op:op.write(img)print(dirt['name'],"下载完毕!!!")
if __name__ == "__main__":tasks = []link = getLink()for i in link:c = askUrl(i)task = asyncio.ensure_future(c)tasks.append(task)loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.wait(tasks))

执行结果:

 

小白水平有限,如有问题还请指出包含

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1379852.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C语言案例 阶乘求和-12

题目:求1 2!3! … 20!的和。 程序分析 阶乘相关原理:一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!,任何大于1的自然数n阶乘表示方法:…

5大电脑软件推荐!每一款都是精心挑选,良心推荐!

说起实用的电脑软件,我想你看对地方了,世上最棒最实用的电脑软件推荐!每一款都十足良心! 是时候表演真正的技术了! 1.PotPlayer 超受欢迎的播放器之一。这款播放器可能会成为你的菜,内存占用低并且不卡&a…

Windows上有哪些推荐的笔记软件?

说实话,windows上的优秀的笔记软件没有ipad上多,在ipad上的notability、goodnotes、marginnote等优秀的笔记软件,在windows上很少有可替代的产品,不过在windows上也有一些比较优质的笔记软件,对于学生来说,…

3款强大到离谱的电脑软件,个个提效神器,从此远离加班

推荐3款让你偷懒,让你上头的提效电脑软件,个个功能强大,让你远离加班! 很多几个小时才能做好的事情,用上它们,只需要5分钟就行!! 1、Quicker —— 桌面快速启动工具 Quicker鼠标效…

这几款好用的电脑软件推荐给你

软件一:potplayer PotPlayer是一款免费的媒体播放器,它支持多种格式的音频和视频文件。它的界面简洁而且易于使用,让用户可以轻松地播放各种媒体文件。以下是PotPlayer的一些主要功能: 支持多种格式:PotPlayer支持多…

5款超级无敌好用的电脑软件 建议收藏!

1.Quicker Quicker绝对要吹爆,Quicker可以给常用的软件和操作建立捷径,鼠标中键调出快捷面板使用,将常用操作放在手边,绝对的生产力工具,节省大量时间。 支持自定义动作,内置丰富的动作库,可…

电脑推荐软件

个人推荐电脑软件,如需自取。附下载链接: 电脑推荐软件: https://url46.ctfile.com/d/42812846-54181981-4b3214?p7872 (访问密码: 7872) 1、Everything 文件搜索器,快速找出电脑里面所有文件,支持关键字查找。 下载链接&#xf…

3.1 Spring MVC概述

1. MVC概念 MVC是一种编程思想,它将应用分为模型(Model)、视图(View)、控制器(Controller)三个层次,这三部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护…

Vue生命周期函数(详解)

目录 生命周期图 生命周期函数 beforeCreate和created的区别 beforeCreate创建前应用场景 created创建后应用场景 beforeMount和mounted的区别 beforeMount挂载前应用场景 mounted挂载后应用场景 beforeUpdate和updated的区别 beforeUpdate更新前应用场景 updated更新后应用…

数据通信——VRRP

引言 之前把实验做了,结果发现我好像没有写过VRRP的文章,连笔记都没记过。可能是因为对STP的记忆,导致现在都没忘太多。 一,什么是VRRP VRRP全名是虚拟路由冗余协议,虚拟路由,看名字就知道这是运行在三层接…

【前端 | CSS】滚动到底部加载,滚动监听、懒加载

背景 在日常开发过程中,我们会遇到图片懒加载的功能,基本原理是,滚动条滚动到底部后再次获取数据进行渲染。 那怎么判断滚动条是否滚动到底部呢?滚动条滚动到底部触发时间的时机和方法又该怎样定义? 针对以上问题我…

【瑞吉外卖】Linux学习

Linux常用命令 Linux命令初体验 Linux的命令都是由一个或几个单词的缩写构成的 命令对应英文作用lslist查看当前目录下的内容pwdprint work directory查看当前所在目录cd [目录名]change directory切换目录touch [文件名]touch如果文件不存在,新建文件mkdir [目录…

HCIA---动态路由---RIP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一.动态路由 二.动态路由协议分类 IGP:内部网关协议 EGP:外部网关协议 三.RIP协议概述 RIP版本分类: RIP三要素: 思维…

JSP的文件扩展名必须是.jsp吗

并不是 打开Tomcat目录下conf目录下的web.xml 也就是说,映射路径为xxx.jsp或者xxx.jspx就会访问jsp 可以修改

C语言每日一题:16:数对。

思路一&#xff1a;基本思路 1.x,y均不大于n&#xff0c;就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现&#xff1a; #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…

将exe应用打包成安装包

文章目录 前言一、打包exe文件1.安装Inno setup2.打包成安装包 二、测试安装包 前言 使用Inno setup应用来打包exe文件成安装包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、打包exe文件 1.安装Inno setup 官网网址&#xff1a;https://jrsoft…

EasyExcel下载xls、xlsx 出现文件格式与扩展名不匹配

是ContentType类型错误&#xff0c;如果需要导出xlsx就使用 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 如果使用xls就设置为&#xff1a;response.setContentType("application/vnd.ms-excel;charsetUT…

导出多个Excel文件并打包为压缩包下载

问题简述 之前系统里做的导出都是千篇一律的所有文件导在一个excel里&#xff0c;有现成的工具&#xff0c;现成的逻辑。 突然有那么一天&#xff0c;一切都不再现成了&#xff0c;我得把数据们导出为压缩包&#xff0c;一人一个Excel谁也不干涉谁。研究和参考了一下网上大神…

office安装包百度云

包含了office2010&#xff0c;office2013&#xff0c;office2016&#xff0c;office2019&#xff0c;office2021以及 新的office安装包 百度云网盘分享office 安装教程&#xff1a; 1安装前&#xff0c; 解压完成后&#xff0c;找到Setup.exe并双击 2等待安装&#xff0c;过程…