python爬取王者荣耀英雄图片
一、分析需要爬取的网站
①、打开官方王者荣耀壁纸网站
-
网站地址:https://pvp.qq.com/web201605/wallpaper.shtml
②、快捷键F12,调出控制台进行抓包
③、找到正确的链接并分析
④、查看返回数据格式
⑤、解析url链接
⑥、查看url内容是否是所需图片,发现其实是缩略图
⑦、那就去分析网站,随便点开一张壁纸,查看指定格式的链接
⑧、找到目标地址
⑨、分析目标链接和缩略图的链接区别
-
缩略图:http://shp.qpic.cn/ishow/2735090714/1599460171_84828260_8311_sProdImgNo_6.jpg/200
-
目标图:http://shp.qpic.cn/ishow/2735090714/1599460171_84828260_8311_sProdImgNo_6.jpg/0
-
可以知道,将指定格式的缩略图地址后面200替换成0就是目标真实图片
二、爬虫代码
①、至此,爬虫分析完成,爬虫完整代码如下
放在另一篇文章中:https://www.cnblogs.com/junmoye/p/14618474.html
②、详细分析链接
-
其实前端发送的是jsonp请求,这样的数据在python不好处理,因为不是标准的json格式
-
因为其前面JQuery1710418919222这个字符串,而知道jsonp的请求的都知道,有这个前缀,必然请求链接中有相同的callback参数,将其删除即可
-
因此我python代码中是删除了这个参数的
-
这个链接还有很多参数,其实我觉得很多都可以删除,但是我懒得慢慢去试
-
这个请求链接中最重要的一个参数必然就是页码数,也就是page这个参数,iListNum=20&totalpage=0&page={}
-
上面的三个参数是可用的,一个是20,指每页的数量,totalpage估计没啥用,page抓包发现是从0开始的,这个需要注意一下,因为下面代码需要将总页数减1
③、格式选择
-
开始运行时,让你选择想下载格式的序号,为什么是8个格式呢,看原网页就知道了,8种不同分辨率的
-
看上面的图片,缩略图链接有1-8,对应了8中分辨率的缩略图,那么原图必然也是8种
-
这里我默认1920*1080的,一般电脑用这个分辨率的都可以
-
其中1的原图,你自己试下,其实也是一个缩略图,所以一般下载选择2-8
④、下载代码分析
-
第一次请求主要是为了获取总页数,但是请求是从0开始为第一页,所以需要减去1
-
while true中就是开始从0循环去请求地址,先找到缩略图地址,然后将缩略图的地址链接200替换成0就是目标图片地址了
-
如果名字中有特殊字符,就将其用正则去除,不然可能会影响路径的查找
⑤、爬虫运行的结果,相同名字的放在同一个文件夹

更多资源请关注:【全面资源集】

浙公网安备 33010602011771号