案例:多线程爬虫
目标:爬取糗事百科段子,待爬取页面URL:http://www.qiushibaike.com/8hr/page/1
要求:
使用requests获取页面信息,用XPATH/re 做数据提取
获取每个帖子里的 用户头像链接、用户主页、用户名、用户性别、用户年龄、段子内容、点赞次数、评论次数
保存到本地json文件内
采用多线程
queue(队列对象)
queue是python中的标准库,可以直接import queue引用,队列是线程间最常用的交换数据的形式
python下多线程:
对于资源,加锁是个重要的环节。因为python原生的list, dict等,都是not thread safe的。而queue,是thread safe(线程案例)的,因此在满足使用条件下,建议使用队列
初始化:class queue.Queue(maxsize) FIFO(先进先出)
常用方法:
queue.Queue.qsize() 返回队列的大小
queue.Queue.empty() 如果队列为空,返回True,反之返回False
queue.Queue.full() 如果队列满了,返回True,反之返回False
queue.Queue.get([block[, timeout]]) 从队列中取出一个值,timeout为等待时间
创建一个“队列”对象
import queue
myqueue = queue.Queue(maxsize = 10)
将一个值放入队列中
myqueue.put(10)
将一个值从队列中取出
myqueue.get()