。。其实我不喜欢玩王者的,,不过壁纸好看就算了脑部链接

踩点

毕竟企鹅baba的网站,不是那么好爬的。。壁纸图片的url并不在网页源代码中,所以通过减缓网页加载速度来得到这些url 藏在了哪里。。。具体方法可见我之前写的爬网易云的方法。

经过操作我们会在worklist。。。。。这个文件中找到我们需要的数据。不过是加密的,放到 json解析网站上一解析就有了

注意要删掉jQuery171019307142189807158_1586675620843(这个开头和最后的小括号。这些蓝色的就是我们要的 url了。不过还是解密的。所以打开我们的python,使用parse 这个解码工具,于是我们就有了真正的url。。。。。

from urllib import parse
result = parse.unquote('http%3A%2F%2Fshp%2Eqpic%2Ecn%2Fishow%2F2735040117%2F1585734643%5F84828260%5F29030%5FsProdImgNo%5F3%2Ejpg%2F200')print(result)
>>>http://shp.qpic.cn/ishow/2735040117/1585734643_84828260_29030_sProdImgNo_3.jpg/200

我们要的是大的图,根据在原网站上看到的图片地址做一下对比,将最后的200改成0就好了。。。

所以说我们要的数据就在这个url 中,并且通果其中page=数字,来获取不同页面的壁纸(page在哪?自己找吧)…

Request 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=9&iOrder=0&iSortNumClose=1&jsoncallback=jQuery171019307142189807158_1586675620843&iAMSActivityId=51991&everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&=1586676909304

代码

速度飞起,,爬虫真是太神奇了,hhhhh

from urllib import parse, request
import requests
import os
import threading
import queue
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',"Referer": "https://pvp.qq.com/web201605/wallpaper.shtml"}class Producer(threading.Thread):   # 生产真正的urldef __init__(self, page_queue, image_queue, *args, **kwargs):  # 重写构造函数,传入队列。代表了任意位置参数和关键字参数# 因为我们重写了init 函数,所以要想正常使用还要调用父类的方法。super(Producer, self).__init__(*args, **kwargs)self.page_queue = page_queueself.image_queue = image_queuedef run(self) -> None:while not self.page_queue.empty():url = self.page_queue.get()resp = requests.get(url, headers=headers)result = resp.json()datas = result['List']for data in datas:image_urls = extract_images(data)name = parse.unquote(data['sProdName']).strip().replace("1:1", "")  # 避免取名出错,不能有空格,不能有冒号之类的dirpath = os.path.join("images1", name)if not os.path.exists(dirpath):os.mkdir(dirpath)         # 避免重复创建文件for index, image_url in enumerate(image_urls):self.image_queue.put({'image_url': image_url, 'image_path': os.path.join(dirpath, "%d.jpg" % (index + 1))})# 消费者需要从生产者提取图片链接和保存路径,所以以字典的方式添加。class Consumer(threading.Thread):def __init__(self, image_queue, *args, **kwargs):super(Consumer, self).__init__(*args, **kwargs)self.image_queue = image_queuedef run(self) -> None:while True:try:image_obj = self.image_queue.get(timeout=10)   # 得到一个字典,设置超时,如果图片已经下载完避免一直卡在那抛出异常image_url = image_obj.get('image_url')image_path = image_obj.get('image_path')try:request.urlretrieve(image_url, image_path)print("%s下载完成!" % (image_url))except:print('下载失败')except:breakdef extract_images(data):image_urls = []for x in range(1, 9):image_url = parse.unquote(data['sProdImgNo_%d' % x]).replace("200", "0")# unquote(string, encoding='utf-8', errors='replace')image_urls.append(image_url)return image_urlsdef main():page_queue = queue.Queue(10)image_queue = queue.Queue(1000)   # 保存每个图片url 的中间队列,所以要大一点for i in range(0, 10):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={page}&iOrder=0&iSortNumClose=1&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1586675621245'.format(page=i)page_queue.put(url)for x in range(3):th = Producer(page_queue, image_queue, name='生产者%d号' % x)th.start()for x in range(5):th = Consumer(image_queue, name='消费者%d' % x)th.start()if __name__ == '__main__':main()

然后我在想,,,如果当初把打王者的时间用来敲代码,,,,,,,

多线程下载王者农药高清壁纸相关推荐

  1. 多线程下载王者荣耀高清壁纸(过程超详细)

    文章分为单线程和多线程两个部分,选择单线程一个一个下载速度会很慢,多线程下载可以明显提升速度.但先用单线程写出代码,再在此基础上改动成多线程,思路会更加清晰,对初学者也更加友好! 单线程下载王者荣耀壁 ...

  2. 学习笔记(47):150讲轻松搞定Python网络爬虫-高速下载王者荣耀高清壁纸(1)

    立即学习:https://edu.csdn.net/course/play/24756/284634?utm_source=blogtoedu 解码: from urllib import parse ...

  3. 下载王者荣耀高清壁纸

    import requests from urllib import parse import os from urllib import requestheaders={ 'user-agent': ...

  4. 爬虫 | 王者荣耀高清壁纸-多线程

    # CY3761 | 2021-11-04 18:23 import json import os import queue import time import urllibimport reque ...

  5. python爬虫--王者荣耀高清壁纸下载(多线程)

    下面的代码是采用多线程的生产者消费者模式,下载速度比之前文章的普通下载快一点. 普通下载的链接:python爬虫–王者荣耀高清壁纸下载 代码在下载方面是没有问题的,可以直接运行,就是在收集打不开链接的 ...

  6. python手机壁纸超清_Python爬虫-王者荣耀高清壁纸下载

    绪论 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.python是一种跨平台的计算机程序设计语言.是一种 ...

  7. python爬取王者_python 爬取王者荣耀高清壁纸

    一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 预览一下桌面吧: 是不是看着这样的桌面也很带感,_ (学会这个技术,你可以爬取其他网站的类似图片 ...

  8. python 爬取王者荣耀高清壁纸

    代码地址如下: http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  9. python爬虫练习高清壁纸【王者荣耀高清壁纸】python爬虫

    python爬虫练习高清壁纸[王者荣耀高清壁纸] 仅做练习使用,各位小伙伴不用乱来!!! 现成的代码,直接拿走研究,已经精简了自行美化 页面自己去分析分析 ,学习效果更佳. import reques ...

最新文章

  1. $\mathbf{R}^n$中的紧集是闭有界集
  2. Java:代码验证 StringBuffer 线程安全,StringBuilder 非线程安全
  3. linux下如何查看文件大小 快速找到最大文件的方法
  4. signature=65a5d6b0ac441e09ae68e9bbee76cba1,Bortezomib
  5. VS code常用的快捷键
  6. 《C++ Primer 5th》笔记(10 / 19):泛型算法
  7. C++复习总结(涵盖所有C++基本考点)!
  8. axis2 wsdl2java 报错_解决webService+axis2生成的wsdl文件有两个Bindings/Endpoint 的问题
  9. HDU2187 老人是真饿了【贪心】
  10. hadoop-1.2.1运行过程中遇到的问题
  11. 2021年下半年软件设计师上午真题及答案解析
  12. TLV协议——实现封包与解析
  13. PC能登录微信,但是不能访问网页/代理服务器没有响应
  14. 数据结构之Python实现二分法查找dichotomy
  15. word中插入未压缩的原图
  16. 在vscode中使用iconfont阿里字体图标
  17. python中0x是什么意思_弱问下,以0x开头的数值表示什么意思?
  18. CI/CD流水线技术方案
  19. AD网表转换ALLEGO步骤详解(可私信问题解决)
  20. 斗智斗勇之springmybatis

热门文章

  1. python3爬取微博评论api情感分析_如何科学地蹭热点:用python爬虫获取热门微博评论并进行情感分析...
  2. 读卡购票c语言程序,基于51单片机的c语言韦根卡读卡程序 门禁系统
  3. 2023团体程序设计天梯赛--正式赛
  4. 使用JSP从服务器下载文件的示例
  5. AutoCAD--通用图元组码 (DXF)、索引颜色代码等常量
  6. Mysql(验证用户登录)
  7. 【一】JAVAScript 学习笔记:如何用javascript输出helloworld
  8. 联想计算机网络唤醒是怎么回事,笔记本开启网络唤醒功能设置的操作方法
  9. Kotlin+Retrofit + MVVM 的网络请求框架的封装
  10. mybatis-plus修改和批量修改