思路:
生产者负责获取图片地址和创建图片文件夹,消费者负责下载图片

import requests
from urllib import request
import json
from urllib import parse
import os
import re
import threading
import queueheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',
'referer': 'https://pvp.qq.com/web201605/wallpaper.shtml'}class Producer(threading.Thread):def __init__(self,page_queue,image_queue,*args,**kwargs):super(Producer,self).__init__(*args,**kwargs)self.page_queue = page_queueself.image_queue = image_queuedef run(self):while not self.page_queue.empty():page_url = self.page_queue.get()resp = requests.get(page_url,headers=headers)result = resp.json()datas = result['List']for data in datas:image_urls = get_image_urls(data)name = parse.unquote(data['sProdName']).replace("1:1", "").strip()dir_path = os.path.join('no_code',name)if not os.path.exists(dir_path):os.mkdir(dir_path)for index,image_url in enumerate(image_urls):self.image_queue.put({'image_url':image_url,'image_path':os.path.join(dir_path,'%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):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(image_path + '下载完成')except:print(image_path+'下载失败')print(image_url)except:breakdef get_image_urls(data):image_urls = []for x in range(1,9):image_url = re.sub(r'(/200)$','/0',parse.unquote(data['sProdImgNo_%d'%x]))image_urls.append(image_url)return image_urlsdef main():page_queue = queue.Queue(21)image_queue = queue.Queue(3201)for i in range(0,21):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=1&iFlowId=267733&iActId=2735&iModuleId=2735&_=1583302315533'.format(page=i)page_queue.put(url)for x in range(0,3):th = Producer(page_queue,image_queue,name = '生产者%d号'%x)th.start()for x in range(0,5):th = Consumer(image_queue,name = '消费者%d号'%x)th.start()if __name__ == '__main__':main()

多线程下载王者荣耀图片相关推荐

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

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

  2. 多线程下载王者荣耀壁纸

    多线程下载王者荣耀壁纸 该程序中: 生产者:产生图片网址请求和生成目录 消费者:下载由生产者生产的网址中的图片 import requests from urllib import parse fro ...

  3. python爬虫下载王者荣耀图片

    python爬虫下载王者荣耀图片 腾讯课堂白嫖的一堂课,大佬勿喷. import requests import jsondata = requests.get('http://pvp.qq.com/ ...

  4. 利用python从网络上爬取图片_一篇文章教会你利用Python网络爬虫抓取王者荣耀图片...

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 王者荣耀作为当下最火的游戏之一,里面的人物信息更是惟妙惟肖,但受到 ...

  5. Python爬虫下载王者荣耀全皮肤

    python爬虫下载王者荣耀全皮肤 import requests import os from time import timestart = time() headers = {'User-Age ...

  6. python玩王者荣耀皮肤_Python爬虫:十几行代码下载王者荣耀所有皮肤

    访问,一键创建你的人工智能项目作者 | 王强 来源 | C与Python实战 起因:前两天在公众号上看到一篇文章内容就是爬取王者荣耀的皮肤,但是内容太大概了,如果跟着他做肯定做不出来,所以我打算自己做 ...

  7. qfile超过下载文件容量_中兴展示5G下载王者荣耀:不到20秒下载完成

    中关村在线消息:北京时间5月7日,近日中兴手机在其官方微博上展示了用5G网络下载<王者荣耀>的视频.基于5G网络,Axon 10 Pro下载容量大小为1.6GB的<王者荣耀>, ...

  8. Python多线程下载网络URL图片的方法

    Python多线程下载网络URL图片的方法 采用多线程的方法,通过URL地址,下载资源图片 GitHub地址:https://github.com/PanJinquan/python-learning ...

  9. python多线程下载小姐姐图片

    python多线程下载小姐姐图片 闲谈 思路 实现过程 单线程实现代码功能 问题描述 多线程处理办法 完成效果 闲谈 今日闲来无事,翻看博客,看到一篇关于python自动下载图片的文章,就萌生了也写一 ...

最新文章

  1. 余额宝技术架构读后感
  2. 014_logback中的SiftingAppender
  3. C++ auto关键字
  4. onkeyup,onkeydown和onkeypress
  5. 支持python开发的环境有哪些变化_Python开发实践:打造完美的项目工程环境
  6. TreeView控件的展开与折叠
  7. 要求将数组中的0项去掉,将不为0的值存入一个新的数组,
  8. python数据分析开发环境_在MAC上搭建python数据分析开发环境
  9. go去掉最后一个字符_可维护的Go代码程序指南(一)之变量篇
  10. mysql5.7 undo_MySQL 5.7新特性之在線收縮undo表空間
  11. 用户关闭浏览器页器,弹出一个提示
  12. ENVI4.8下载与安装
  13. 数学建模:人口增长模型
  14. 02.Mirth Connect client API 调用
  15. 算法训练 - 黑色星期五 有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又
  16. IMDB排名前100名经典电影
  17. 计算机英语(王艺)翻译(unit1-unit5)
  18. 低配置服务器安装GitLab
  19. 红黑树时间复杂度为什么是O(logn)?
  20. Ramnit 蠕虫分析

热门文章

  1. 一站式查看网络流量的完整解决方案
  2. I/O流(包括操作系统与内核,用户空间),I/O工作原理,Java I/O流的设计及Java IO系统
  3. EROFS 和 方舟 辩证的看 —— EROFS
  4. 星球日报 | 人民日报微博评ofo押金换金币:别玩虚的;Mt.Gox将赔付1.76万亿日元系谣言;...
  5. 抓取猫眼电影实时数据
  6. hdu吃糖果解题报告
  7. 刘强东的代码水平到底有多牛?网友:95年一个晚上赚5万
  8. 高中音乐教学计算机,浅析多媒体计算机技术在高中音乐课的应用
  9. 在 Linux 终端下生成随机/强密码的五种方法 | Linux 中国
  10. 智能电源插座和电灯开关全国产化电子元件推荐方案