王者荣耀高清壁纸下载(多线程、详细解析)

  • 确定爬取目标网页
  • 锁定所要爬取的图片信息
  • 编写代码

确定爬取目标网页

进入王者荣耀官方网站,点击游戏资料>>>>游戏壁纸

锁定所要爬取的图片信息

  1. 检查,进入开发者工具栏
  2. 选取Network,Ctrl + R刷新
  3. 经过筛选,发现图片信息在
    workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&…267733&iActId=2735&iModuleId=2735&_=1632043658985
    标签页中。
    而图片信息在Responce中以json格式存储。
  4. 在浏览器中搜索json在线解析,将json信息复制解析 (要将jQuery1710016917133802359485_1632043658845(和最后面的)去掉)
  5. 解析结果如图:
  6. 浅蓝色链接便为图片信息,八个链接表示不同的分辨率图片,但url是经过编码的,需要解码。
  7. 解码方式如下:
from urllib import parseresult1 = parse.unquote("http%3A%2F%2Fshp.qpic.cn%2Fishow%2F2735082412%2F1629781114_84828260_705_sProdImgNo_5.jpg%2F200")print(result1)
  1. 访问url后发现就是目标图片。
  2. 接下来创建线程进行爬取。

编写代码

# -*- coding = utf-8 -*-
# @Time : 2021/9/7 20:45
# @Author :CCUT_chao
# @File : run_main_V2.py
# @Software : PyCharmimport requests
from urllib import parse
from urllib import request
import os
import threading
import queueheaders = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36','referer': 'https://pvp.qq.com/'
}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("images", 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) -> 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")request.urlretrieve(image_url, image_path)try:request.urlretrieve(image_url, image_path)print(image_path + "下载完成!")except:print(image_path+"下载失败!")except:breakdef extract_images(data):img_urls = []for x in range(1, 9):img_url = parse.unquote(data['sProdImgNo_%d' % x]).replace("200", "0")img_urls.append(img_url)return img_urlsdef main():page_queue = queue.Queue(18)image_queue = queue.Queue(1000)for x in range(0, 18):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&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1631013702117'.format(page=x)page_queue.put(page_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. python爬虫--王者荣耀高清壁纸下载(多线程)

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

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

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

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

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

  4. 【第1篇】Python爬虫实战-王者荣耀高清壁纸下载

    目标网址:https://pvp.qq.com/web201605/wallpaper.shtml 目录 1.页面分析 2.程序源码 3.结果展示 1.页面分析 通过F12打开浏览器控制台,刷新一下页 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 关于软件工程课程的期望
  2. 关于Xcode 7.3 7.3.1 断点 卡死 无限菊花
  3. Spring 思维导图,让 Spring 不再难懂(cache篇)
  4. CCNA-第十三篇-NAT-上
  5. java 翻转句子_Java编程-句子反转
  6. BZOJ 1878: [SDOI2009]HH的项链 | 莫队
  7. 预防xml注入漏洞攻击_预防性编程-漏洞发生前如何修复
  8. MySQL的binlog
  9. 波士顿动力十年对比刷屏,网友:以后该不会变成终结者吧?
  10. Div被Select挡住的解决办法
  11. Java-static概述
  12. mysql视图子查询_MySQL:FROM子句限制中的带有子查询的视图
  13. “目标-用户-指标”——企业开源运营之道|瞰道@谭中意
  14. 微软五笔调出,中英文切换快捷键
  15. Flexsim Rack设置最底层Level不放货物
  16. QData QPair的组合使用例子一
  17. html方框里打勾,word里如何在□里打√!框框里打勾!!!!!
  18. 多角度了解ABeam(德硕)技术架构
  19. STM32单片机初学心得
  20. Python SyntaxError: Missing parentheses in call to 'print'

热门文章

  1. ERROR: Command errored out with exit status 1
  2. linux hci0 进程,教程 - 在 Azure Stack HCI 上的 AKS 中部署 Linux 应用程序 - AKS-HCI | Microsoft Docs...
  3. 服务器usb驱动安装系统安装失败怎么办,usb驱动安装不成功,详细教您usb驱动安装失败的解决方法...
  4. 上滑解锁流程 - 安卓R
  5. 阿里2018届实习生内推经历
  6. discuz模板修改html,Discuz 修改门户的模板——静态页面套用(动态页写死方法以更新)...
  7. 快捷c语言中控程序,CREATOR快捷\creator\CR-PGMII\ST-7600C\CREATOR中控
  8. xctf攻防世界 MISC高手进阶区 适合作为桌面、stage1
  9. 值得收藏!最佳26个国外 CSS 酷站推荐网站
  10. 云中漫步-我这一辈子