多线程爬取王者荣耀高清壁纸

import threading
import requests
import random
from urllib import request
from urllib import parse
import os
import queue# 随机获取浏览器的UserAgent
UserAgent = random.choice(['Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36','Mozilla / 5.0(Windows NT 10.0;Win64;x64;rv: 78.0) Gecko / 20100101Firefox / 78.0','Mozilla / 4.0(compatible;MSIE7.0;WindowsNT6.1;WOW64;Trident / 5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;InfoPath.3;.NET4.0C;.NET4.0E) QQBrowser / 6.9.11079.201','Mozilla / 5.0(Macintosh;U;IntelMacOSX10_6_8;en - us) AppleWebKit / 534.50(KHTML, likeGecko) Version / 5.1Safari / 534.50','Mozilla / 5.0(iPhone;U;CPUiPhoneOS4_3_3likeMacOSX;en - us) AppleWebKit / 533.17.9(KHTML, likeGecko) Version / 5.0.2Mobile / 8J2Safari / 6533.18.5','Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 535.1(KHTML, likeGecko) Chrome / 13.0.782.41Safari / 535.1QQBrowser / 6.9.11079.201','Mozilla / 5.0(compatible;MSIE9.0;WindowsNT6.1;WOW64;Trident / 5.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;InfoPath.3;.NET4.0C;.NET4.0E)','Mozilla/5.0 (Linux; U; Android 2.3.7; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1','Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0','Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999','Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, like Gecko) Version/6.0.0.337 Mobile Safari/534.1+','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'])# 定义请求头
headers = {'user-agent': UserAgent,'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) -> None: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 = extract_images(data)name = parse.unquote(data['sProdName']).replace('1:1','').strip()dir_path = os.path.join('image',name)# 创建文件夹(如果没有文件夹再进行创建)if not os.path.exists(dir_path):os.mkdir(dir_path)# 把图片的url放到对列中for index,image_url in enumerate(image_urls):self.image_queue.put({'image_url':image_url,'image_path':os.path.join(dir_path,'%d.png'%(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(image_path,'下载成功')except:print(image_path,'下载失败')except:breakdef extract_images(data):image_urls = []for i in range(1,9):image_url = parse.unquote(data['sProdImgNo_%d'%i]).replace('200','0').strip()image_urls.append(image_url)return image_urls# 主函数
def main():# 创建页数的对列page_queue = queue.Queue()# 创建图片的对列image_queue = queue.Queue()start_page = int(input('起始页:'))end_page = int(input('结束页:'))start_page = start_page - 1end_page = end_page + 1for i in range(start_page,end_page):page_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&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1597591362368'.format(page=i)# 把每一页的url添加到对列中page_queue.put(page_url)# 创建5个生产者for i in range(6):producer = Producer(page_queue,image_queue)producer.start()# 创建8个消费者for i in range(15):consumer = Consumer(image_queue)consumer.start()if __name__ == '__main__':main()

python--多线程爬取王者荣耀高清壁纸相关推荐

  1. python多线程爬取王者荣耀高清壁纸过程

    多线程与爬虫 目标url json中查找url 访问url 读取json 查看json的list数组 全部图片 粗暴的单线程获取 多线程执行 目标url 查看http://pvp.qq.com/web ...

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

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

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

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

  4. Python多线程爬虫之二:爬取王者荣耀高清壁纸(多线程)

    一.项目分析 1.查询爬取网址 robots 权限 1.王者荣耀官网:https://pvp.qq.com/ 2.访问王者荣耀官网 rbots 权限: https://pvp.qq.com/robot ...

  5. 如何爬取王者荣耀高清壁纸(详细分析教程)

    1.准备工作 Python 3.7 Python安装有requests模块 王者荣耀官网地址:https://pvp.qq.com/web201605/wallpaper.shtml### 2.网站分 ...

  6. python爬虫爬取必应每日高清壁纸

    python爬虫爬取必应每日高清壁纸 一.简介 二.使用的环境 三.网页分析 1.分析网页每一页url形式以及总页数 2.网页重要信息收集 3.在源码中寻找所需信息的位置 四.代码实现 五.运行爬虫 ...

  7. python爬取王者荣耀高清图

    原理请看:Python?30行代码?爬取王者荣耀所有英雄皮肤图片?_易果啥笔的博客-CSDN博客 我稍微改了一下:因为王者这个herolist.json文件里的信息更新的不太及时,导致爬取出来的皮肤有 ...

  8. 爬取王者荣耀高清皮肤

    爬虫中使用多线程爬虫是一种很常见的方式,可以提高爬取的效率,特别是生产者消费者模型也经常可以见到,今天刚好学习了这种模式,爬取下王者荣耀的高清壁纸,作为练习 import requests from ...

  9. Python批量爬取王者荣耀英雄高清壁纸

    Python批量爬取王者荣耀英雄高清壁纸 文章目录 Python批量爬取王者荣耀英雄高清壁纸 前言 爬虫步骤 python代码实现 总结 前言 很多喜欢玩王者的朋友很希望把王者荣耀的英雄图片拿来做壁纸 ...

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

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

最新文章

  1. 为什么算法专家都建议学习C++?
  2. [转]Ubantu vmware tools 安装
  3. 长春理工大学第十四届程序设计竞赛(重现赛)M.Orx Zone
  4. 基于FPGA的波速形成实现
  5. python零碎知识(8):UserDict 类
  6. 【软件工程】填空题题库
  7. git conifg
  8. linxu其他用户登录mysql_Linux系统的MySQL用户如何开启远程登录权限
  9. antlr 可以用java写吗_java – 我们可以用ANTLR定义一个非上下文语法吗?
  10. 怎样才能办理信用卡成功?
  11. dpdk中文-dpdk虚拟机出错
  12. 我的世界服务器修改金币上限,我的世界联机盒子修改金币方法
  13. windows驱动开发4:WDM、WDF等驱动基本概念
  14. onenote标注pdf笔记_你们怎么用onenote做读书笔记呢?
  15. 融云:让银行轻松上“云”
  16. 怎么设置日程提醒时间
  17. UDS知识整理(一):UDS简介与UDS要求规范简介
  18. java 取上界_Java中的上界通配符 - java
  19. NetFPGA-SUME中Ubuntu环境使用Vivado的相关问题
  20. 集成VueCli5各种功能与插件(一)安装

热门文章

  1. java小项目之:象棋,羡慕你们有对象的!
  2. 几种不同格式的json解析
  3. linux设置python环境变量
  4. QQ快速登录协议分析以及风险反思
  5. 系统完全优化 全面剖析XP
  6. 免费隐私保护国外域名注册商namecheap教程
  7. python中while循环只能用来实现无限循环的编程_while循环只能实现无限循环的编程...
  8. 详解怎么申请注册一个自己的电子邮箱邮件?怎么注册邮箱账号?
  9. 如何把极坐标化为直角坐标_极坐标方程化为直角坐标方程
  10. Module not found: Error: Can‘t resolve ‘core-js/fn/promise‘