Scrapy框架 settings.py
在settings.py文件中,可以设置关于scrapy爬虫,比如反爬措施、提高性能等
一、反爬:
1、USER-AGENT设置:
创建一个USER-AGENT池,随机从其中抽取一条作为request中的User-Agent;
demo:
1 USER_AGENT_LIST = [ 2 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", 3 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)", 4 "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", 5 "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", 6 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", 7 "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", 8 "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)", 9 ] 10 USER_AGENT = random.choice(USER_AGENT_LIST)
2、cookies设置:
禁止cookies,有些站点会从cookies中判断是否为爬虫,
COOKIES_ENABLED = False
3、设置下载延迟:
DOWNLOAD_DELAY = num 延迟区间范围为 (0.5~1.5) * num
4、使用代理IP:
可以购买代理IP,
或者使用免费的代理IP,比如 西刺、快代理等,可以写一个简单爬虫定时爬取免费IP,测试是否可用,组成免费代理池
5、使用高度分布式的下载器(downloader)来绕过禁止(ban),就只需要专注分析处理页面。这样的例子有:Crawlera
二、提高爬虫性能:
提高性能具体可以从下列着手,但是具体问题具体分析,不是每个爬虫都适用:
1、提高并发能力:
并发是指scrapy同时处理的request的数量,默认的全局并发限制为16,可增加这个值,增加多少取决于爬虫占CPU多少,设置前最好测试一下,一般占在80-90%为好
CONCURRENT_REQUESTS = num
2、降低log级别:
当调试程序完毕后,可以不适用DEBUG log级别,达到减少CPU使用率
LOG_LEVEL = 'INFO'
3、禁止cookies:
禁止cookies可以减少CPU使用率以及爬虫在内存中记录的踪迹
COOKIES_ENABLED = False
4、禁止重试:
对于失败的HTTP请求(如超时)进行重试会降低爬取效率,当爬取目标基数很大时,舍弃部分数据不影响大局,提高效率
RETRY_ENABLED = False
5、减少下载超时:
减小下载超时能让卡住的连接能被快速的放弃并解放处理其他站点的能力
DOWNLOAD_TIMEOUT = num