爬虫知识7:scrapy的settings配置文件中各参数解释以及如何自定义类
建立完爬虫项目之后,都会有如下的结构:
其中,settings.py文件是存放配置文件用的,初始化的settings文件,只有以下四个变量是默认定义好的,其他都是注释掉的。现在从上往下,看下每个变量的含义。
1)BOT_NAME:爬虫项目的名字,每个爬虫去爬取网站时,都会在user-agent带着这个爬虫名字去爬取网站。
2)SPIDER_MODULES、NEWSPIDER_MODULE:爬虫的路径
3)USER_AGENT:请求头,用来表示请求者的信息,比如会带着客户端的爬虫名称去访问爬虫网站,如果被识别到就会被拒绝,因此可以参考反爬虫的博文,动态伪装成浏览器,以便成功爬取
4)ROBOTSTXT_OBEY:是否遵守要爬取的网站的配置规则,一般网站都会配置一些协议,禁止某些爬虫的爬取。这个可以使用网址/robots.txt去查看具体的协议。当设置为false时,就代表不遵守网站的协议,也即,你要不要我爬我都爬。
5)CONCURRENT_REQUESTS:并发请求数,最大是32,如果写成2,就代表一次发2个。如果对方没有做反爬虫机制,就可以开很大的并发,这样可以一下子返回很多数据。
6)DOWNLOAD_DELAY:下载延迟秒数,限制频繁访问,以防止被封号。不要给别人的网站造成压力。
7)CONCURRENT_REQUESTS_PER_DOMAIN:domain是域名的意思,针对每个域名限制n个并发,最大为16个。
8)CONCURRENT_REQUESTS_PER_IP:单IP访问并发数,如果有值则忽略7)对域名并发数的限制,并且延迟下次秒数也应用在每个IP。注:一个域名可以有很多ip,公司可以有很多服务器,对外部来说只有一个域名
9)COOKIES_ENABLED:返回的response是否帮你去解析cookies,如果为false则不拿,当然如果response没有访问到网站也不会携带cookies
10)COOKIES_DUBUG:是否调试模式,如果为True,打印的时候,cookies会出现,当然是否携带cookies还是COOKIES_ENABLED说了算
-
11)TELNETCONSOLE_ENABLED:通过Telnet可以监听当前爬虫的状态、信息,操作爬虫等...。使用方法是:打开cmd,使用telnet 127.0.0.1 6023 以及est(),即可进入操作页面
12)DEFAULT_REQUEST_HEADERS:默认的请求头,每个请求都可以携带,如果针对每个请求头设置,也可以再此设置
13)SPIDER_MIDDLEWARES:中间件,可以自定义
14)DOWNLOADER_MIDDLEWARES:下载中间件,可以自定义
-
15)DOWNLOADER_MIDDLEWARES:自定义扩展,比如自定义的扩展名为myextend
EXTENSIONS = {
# 'scrapy.extensions.telnet.TelnetConsole': None,
'chouti_hh.extendtions.myextend': 300,
}
16)ITEM_PIPELINES:自定义PIPELINES处理请求,主要为了存储数据使用。每行后面的整型值,确定了他们运行的顺序,item按数字从低到高的顺序,通过pipeline,通常将这些数字定义在0-1000范围内。
-
17)下面的参数,为了做智能的限速请求。以AUTOTHROTTLE_DEBUG=True开始,=False结尾,中间的参数: 比如AUTOTHROTTLE_START_DELAY为第一个请求延迟多少秒,AUTOTHROTTLE_MAX_DELAY为最大的延迟。
源码中的设置
18)下面的参数,为缓存使用。
以下参数均为可以自增加的变量:
19)DEPTH_LIMIT:爬虫允许的最大深度,可以通过meta查看当前深度;0表示无深度。可以自定义,比如下面,如果有多页,只允许访问一页。
20) DEPTH_PRIORITY:爬取时,0表示深度优先Lifo(默认),一直找到底;1表示广度优先FiFo,是一层层找
22) 自定义去重url的类:比如自定义的去重类名为duplication.RepeatFilter。需要三个步骤:
步骤1:需要在settings.py中**下,并写上自定义的类名
步骤2:duplication.py中的程序如下:
其他自定义类是类似的操作步骤。