版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多线程爬虫Contents知识目标掌握基本的多线程爬虫技术技能目标提高数据采集和处理能力素养目标培养良好的信息素养和道德意识多线程爬虫是一种利用多个线程同时进行网络数据抓取的技术。多线程网络爬虫传统的单线程爬虫爬取网页的过程是按照顺序逐个进行的。先请求一个网页再请求下一个网页等待响应返回多线程爬虫同时处理多个网页请求。多线程网络爬虫充分利用计算机的多核处理能力加快数据抓取速度将多线程技术运用在采集网页信息和解析网页内容上。多线程爬虫多线程爬虫流程如下:1.首先有一个网址列表,是要爬取数据的网页列表。2.同时启动多个线程抓取网页内容,一般启动固定数量的线程。3.将抓取到的网页源码存储在一个列表里。4.同时使用多个线程对网页源码表里的网页内容进行解析。5.将解析之后的数据存储起来。多线程爬虫queue类是Python标准库中的线程安全的队列实现,提供了一个适用于多线程编程的先进先出的数据结构—队列。tailhead使用queue模块实现多线程爬虫queue模块是Python内置的标准模块可以直接通过importqueue引用,在Queue模块中提供了三种同步的、线程安全的队列,分别是:Queue(先进先出队列)LifoQueue(后进先出队列)PriorityQueue(优先级队列)LifoQueue和PriorityQueue都是Queue的子类。这些队列的唯一区别是元素取出的顺序不同。使用queue模块实现多线程爬虫表示一个基本的FIFO(FirstInFirstOut)队列,即先进先出。queue.Queue(maxsize=0)是个整数,规定了队列的长度maxsize一旦达到上限,再添加数据会导致阻塞,直到队列中的数据被消费掉。Queue类如果maxsize小于或者等于0队列大小没有限制maxsize的默认值为0。使用Queue的示例示例:fromqueueimportQueuequeue_obj=Queue()foriinrange(4):queue_obj.put(i)whilenotqueue_obj.empty():print(queue_obj.get())运行结果:0123LifoQueue类后进先出队列(LastinFirstOut)queue.LifoQueue(maxsize=0)maxsize参数的含义与Queue类相同。使用LifoQueue的示例示例:fromqueueimportLifoQueuelifo_queue=LifoQueue()foriinrange(4):lifo_queue.put(i)whilenotlifo_queue.empty():print(lifo_queue.get())运行结果:
3210使用queue模块实现多线程爬虫表示优先级队列,按级别顺序取出元素,优先级队列中的元素一般采取元组(优先级别,数据)的形式来存储。queue.PriorityQueue(maxsize=0)其中,maxsize参数的含义与前两个类相同。PriorityQueue类使用PriorityQueue的示例示例:fromqueueimportPriorityQueueclassJob(object):def__init__(self,level,description):self.level=levelself.description=descriptionreturndef__lt__(self,other):returnself.level<other.levelpriority_queue=PriorityQueue()priority_queue.put(Job(5,'中'))priority_queue.put(Job(10,'低'))priority_queue.put(Job(1,'急'))whilenotpriority_queue.empty():next_job=priority_queue.get()print('开始工作:',next_job.description)运行结果:开始工作:急开始工作:中开始工作:低Queue模块Queue(先进先出队列)LifoQueue(后进先出队列)PriorityQueue(优先级队列)Queue模块定义了2个异常类:Empty当从空队列中取数据时,可抛出此异常。Full当向一个满队列中存数据时,可抛出此异常。Queue模块Queue类提供了数据存储和管理的常用方法方法说明empty()如果队列为空,返回True,否则返回False。full()如果队列已满则返回True,否则返回False。get()从队头获取并删除第一个元素。put()在队尾添加一个元素。get_nowait()立即取出一个元素,不等待,相当于get(False)。put_nowait()立即放入一个元素,不等待,相当于put(item,False)。join()阻塞当前线程,直到队列里的所有元素都已被处理。本讲小结分析了多线程爬虫的整个流程1结合实际示例介绍了Python中实现多线程的queue模块的基本使用2课后作业使用单线程、多线程、技术获取段子网:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 果树苗木订购合同范例
- 合意购买土地合同范例
- 商丘工学院《学前科学教育与活动指导》2023-2024学年第一学期期末试卷
- 商洛职业技术学院《高等物理有机化学》2023-2024学年第一学期期末试卷
- 汕头职业技术学院《数据结构初步》2023-2024学年第一学期期末试卷
- 汕头大学《期权期货定价理论》2023-2024学年第一学期期末试卷
- 陕西中医药大学《级管理理论与实践》2023-2024学年第一学期期末试卷
- 陕西艺术职业学院《专题设计1》2023-2024学年第一学期期末试卷
- 装运垃圾合同范例
- 抽水合同范例
- 口腔专科护理知识考核试题与答案
- 音响工作总结共3篇(剧院音响工作个人总结)
- 安徽省建筑、装饰装修工程计价定额说明及工程量计算规则
- 新高考3+1+2改革情况详细讲解课件
- 思维训练——对折问题实用教案
- 学习和记忆——脑科学简介
- 重大第八版三年级上信息技术期末试题
- eviews软件对于我国城镇居民消费性支出和可支配收入的分析
- 2022年档案管理员资格考试题库及答案-精简版
- CA6140型车床电气控制线路的检修
- 碱炉安装浅谈
评论
0/150
提交评论