爬虫的本质就是模拟client频繁请求server,获取响应数据,对响应数据进行解析处理。常规的串行方式同步阻塞执行,必须等待一个任务处理完后才能之后才能继续下一个,这样效率就非常低。最常用的聚焦爬虫对数据处理的IO操作(阻塞)相对密集,因此需要考虑使用异步方案解决。

 

1.同步串行:提交任务之后,只有等待这个任务执行完毕返回结果才会继续执行下一个,这样效率比较低下!

 1 '''
 2 同步串爬取
 3 '''
 4 import os
 5 import time
 6 import requests
 7 headers={
 8 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
 9 }
10 urls = [
11     ('百度知道','https://zhidao.baidu.com/daily?fr=daohang'),
12     ('新浪', 'https://www.sina.com.cn/'),
13     ('腾讯网', 'https://www.qq.com/'),
14     ('简书','https://www.jianshu.com/'),
15     ('今日头条','https://www.toutiao.com/'),
16     ('新浪财经','https://finance.sina.com.cn/'),
17     ('东方财富','http://www.eastmoney.com/'),
18     ('襄阳家教网','http://www.jiajiao100.com/'),
19 ]
20 
21 #同步串行爬取
22 start=time.time()
23 for url_info in urls:
24     url=url_info[1]
25     path=os.path.join('response',url_info[0]+'.html')
26     response=requests.get(url,headers=headers)
27     response.encoding='utf-8'
28     with open(path,'w',encoding='utf-8')as f:
29         f.write(response.text)
30 t=time.time()-start
31 print(t)#4.652341365814209
同步串行

相关文章: