温馨提示:
爬虫玩得好,监狱进得早。数据玩得溜,牢饭吃个够。
《刑法》第 285 条,非法获取计算机信息系统数据罪。
违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金;情节特别严重的,处三年以上七年以下有期徒刑,并处罚金。
正文:
本章我们来介绍一个新的方式爬虫实用知识, 多线程 ,可能有人会问为什么不用多线程,这个其实说实话,多线程用的会多一点,进程用的少,多线程为主
应用场景
【1】多进程:CPU密集程序
【2】多线程:爬虫(网络I/O)、本地磁盘I/O
创建 队列,等待线程进入
【1】导入模块
from queue import Queue
【2】使用
q = Queue()
q.put(url)
q.get() # 当队列为空时,阻塞
q.empty() # 判断队列是否为空, True/False
【3】q.get()解除阻塞方式
3.1) q.get(block=False)
3.2) q.get(block=True,timeout=3)
3.3) if not q.empty():
q.get()
创建线程模块
# 导入模块
from threading import Thread
# 使用流程
t = Thread(target=函数名) # 创建线程对象
t.start() # 创建并启动线程
t.join() # 阻塞等待回收线程
# 如何创建多线程
t_list = []
for i in range(5):
t = Thread(target=函数名)
t_list.append(t)
t.start()
for t in t_list:
t.join()
现在我们分析一下小米应用商店的数据,先来打开看一下:
这个网站是一个动态加载的网站,我们上一个案例 豆瓣电影排行榜数据抓取
提到过,这样网站的特点以及怎么抓取数据,这里我们直接进行抓取,没必要观察URL地址的规律,因为响应内容不存在,我们直接 F12 就抓包就好了
我们先来刷新一下,然后点击下一页,多点两下,抓取几个包就够我们用了
这个就是我们抓取的异步的网络数据包,我们从表面就能看到,问好后面的page= 有0、1、2、3… 这个就是一个查询参数,那我们点开一个看看:
这个应该是,这是count有两千个应该是社交app的个数,下面我们也看到了各个应用app的名字,接下来我们换到Headers里面分析各个信息:
这里面我们分析到这个是一个GET请求,那是这样的请求的话我们就直接找URL、headers、Query String Parameters这三个东西,现在URL就是我们找到的框框里面的URL,headers就是Request Headers的信息,最后我们看一下Query Stri