多线程爬取王者荣耀皮肤壁纸

本文介绍了一个使用Python进行多线程爬虫的示例,详细讲解了如何爬取王者荣耀全英雄皮肤的壁纸链接。通过观察站点,解析JSON文件获取英雄ID,根据规律构造皮肤URL,并利用多线程提升爬取效率。
摘要由CSDN通过智能技术生成

今天写了个小demo,多线程爬取王者荣耀全皮肤,话不多说,直入主题。

https://pvp.qq.com/web201605/herolist.shtml这个是玩王者荣耀官网上的英雄列表,这个时候一共是100个英雄整。小生这边先是用xpath获取所有<li>标签,再获取里边<a>标签的href属性,可是最后只能收集到93个英雄,不全,于是重新试了一个方法,可以获取全部100个英雄了。

一 观察站点,找方法

因为不直接使用xpath获取,所以小生这边观察了一下各个英雄页面的url,很容易就能得到规律 https://pvp.qq.com/web201605/herodetail/505.shtml 只有里边的505这一串数字是不同的,所以下一步就是找到这个id在哪里。于是就去访问文件里找。

如下图,会在访问文件中找到一个英雄列表(herolist.json)的文件,乱码不要紧,编码问题,程序获取的是没问题。访问这个url下载下来,看的清晰。
在这里插入图片描述
手动访问这个文件,获得一串json字符串,可以发现url的id就是这串字符串的ename属性。
在这里插入图片描述
现在我们就可以构造一个全英雄url列表。接下来的任务是找到皮肤的url地址。
皮肤的位置很明显,在下图位置,通过观察页面代码,发现这个切换是通过js改变style的背景,如下下图。但是不难发现,这个url的规律:两个505是英雄id,后边的那个1是英雄的皮肤编号。
在这里插入图片描述
在这里插入图片描述

现在我们也已经可以构造皮肤的url了,不过还有一点,我们还要确定每个英雄拥有的皮肤数量,接着查看源码,不难发现,如下图所示。只需要一点点的改变,用split切割,再用re匹配就可以获得皮肤名称的列表。
在这里插入图片描述
万事俱备,开始码代码

二 码代码啊

先简单介绍一下多线程的使用吧,还是都在代码里,看

from queue import Queue		# 导入队列,用队列代替列表
import threading		# 导入多线程

# 1. 生成队列
queue = Queue()

# 2. 遍历, 将数据添加到queue队列
queue.put(......)			# .put让队列计数+1

# 3. 从queue去除数据,进行处理
queue.get()
...
queue.task_down()		# .task_down配合.get,可以使队列计数-1

# 4. 添加thread任务
t_list = []			# 用于存放任务
for i in range(3):		# 通过循环开启三个线程
	t = threading.Thread(target=function_name)		# 添加多线程任务
	t_list.append(t)
 
for t in t_list:
    t.setDaemon(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值