800819103
在线客服,实时响应qq群
在线客服,实时响应客服电话
13318873961大数据的应用,许多企业都有数据采集的需求,在抓取数据时常常会遭遇各种限制,采集时间越长问题越多,关键是提高采集速度,那么怎么加快爬虫速度?
Python应该算是大家非常喜欢的爬虫语言,而scrapy框架应该算是爬虫模块、框架中的佼佼者,今天我们自定义settings.py文件。
scrapy项目结构
我们自定义settings.py文件的部分设置,今天修改浏览器头。理由:
1、简单防止反爬虫(豆瓣....)
2、加快爬取速度
3、不用每次都是修改项目文件的settings.py
这里解释几个参数:
ROBOTSTXT_OBEY = True-----------是否遵守robots.txt
CONCURRENT_REQUESTS = 16-----------开启线程数量,默认16
AUTOTHROTTLE_START_DELAY = 3-----------开始下载时限速并延迟时间
AUTOTHROTTLE_MAX_DELAY = 60-----------高并发请求时最大延迟时间
最底下的几个:是否启用在本地缓存,如果开启会优先读取本地缓存,从而加快爬取速度,视情况而定
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
以上几个可以视项目需要开启,但是有两个参数最好每次都开启,而每次都是项目文件手动开启不免有些麻烦,最好是项目创建后就自动开启
#DEFAULT_REQUEST_HEADERS = {
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
# 'Accept-Language': 'en',
这个是浏览器请求头,很多网站都会检查客户端的headers,比如豆瓣就是每一个请求都检查headers的user_agent,否则只会返回403,可以开启
#USER_AGENT = 'Chirco (+http://www.yourdomain.com)'
这个是至关重要的,大部分服务器在请求快了会首先检查User_Agent,而scrapy默认的浏览器头是scrapy1.1 我们需要开启并且修改成浏览器头,如:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1
但是最好是这个USER-AGENT会随机自动更换最好了。
首先我们可以收集几个浏览器头,比如:
浏览器头列表
用随机函数random自动更换头,找到scrapy根目录下:X:\Python35\Lib\site-packages\scrapy\templates\project\module
修改的就是这个settings.py.tmpl模板文件
每次执行scrapy startproject name 都会在这个基模版下创建settings.py文件
scrapy模板文件settings.py.tmpl
执行scrapy startproject name后看到settings.py生效了
修改模板后的settings.py文件
现在我们来检查一下我们刚刚的操作是否生效,这里简单创建一个scrapy
执行6次,每次打印request的头
执行结果
执行结果发现每次的浏览器头都是不一样的