爬虫——生产者消费者
2018-09-29 03:59:22来源:博客园 阅读 ()
结构
生产者生成网址并放入队列
多个消费者从队列中取出网址
1 from queue import Queue 2 import time, threading, requests 3 4 url_base = 'http://www.qiushibaike.com/8hr/page/{}/' 5 header = {} 6 7 def load_data(): 8 return [url_base.format(i) for i in [1, 3, 6, 7]] 9 10 #生产者 11 def produce(q): 12 index = 0 13 data = load_data() 14 while True: 15 if index < len(data): 16 q.put(data[index]) 17 index += 1 18 19 #消费者 20 def consume(q): 21 while True: 22 download_url = q.get() 23 # requests.get(download_url,headers=header) 24 print('thread is {} content is {}'.format(threading.current_thread(), download_url)) 25 26 def main(): 27 q = Queue(4) 28 p1 = threading.Thread(target=produce, args=[q]) 29 c1 = threading.Thread(target=consume, args=[q]) 30 c2 = threading.Thread(target=consume, args=[q]) 31 p1.start() 32 c1.start() 33 c2.start() 34 35 if __name__ == '__main__': 36 main()
类
爬虫类需要继承多线程类
初始化方法需要继承父类初始化方法
创建对象,直接start就会调用类中run方法
1 # class ConsumeSpider(threading.Thread): 2 # def __init__(self): 3 # super().__init__() 4 # pass 5 # 6 # def run(self): 7 # pass 8 # 9 # c3 = ConsumeSpider() 10 # c3.start()
协程
协程(coroutine):轻量级的线程,不存在上下文切换,能在多个任务之间调度的多任务方式,可以使用yield实现
1 import time, threading 2 3 def task_1(): 4 while True: 5 print('-----1-----', threading.current_thread()) 6 time.sleep(1) 7 yield 8 9 10 def task_2(): 11 while True: 12 print('-----2-----', threading.current_thread()) 13 time.sleep(1) 14 yield 15 16 17 def main(): 18 t1 = task_1() 19 t2 = task_2() 20 while True: 21 next(t1) 22 next(t2) 23 24 25 if __name__ == '__main__': 26 main() 27
请使用手机"扫一扫"x
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 小白如何入门 Python 爬虫? 2019-08-13
- python day2-爬虫实现github登录 2019-08-13
- python爬虫学习之爬取超清唯美壁纸 2019-08-13
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
- python爬虫常用库 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash