十一、Scrapy的Settings 1、`BOT_NAME` 2、`CONCURRENT_ITEMS` 3、`CONCURRENT_REQUESTS` 4、`DEFAULT_REQUEST_HEADERS` 5、`DEPTH_LIMIT` 6、`DOWNLOAD_DELAY` 7、`DOWNLOAD_TIMEOUT` 8、`ITEM_PIPELINES` 9、`LOG_ENABLED` 10、`LOG_ENCODING` 11、`LOG_LEVEL` 12、`USER_AGENT` 13、`PROXIES:代理设置` 14、COOKIES_ENABLED=False 15、在scrapy中使用 16、TELNETCONSOLE_ENABLED 17、SCHEDULER调度器 18、访问url去重
Scrapy设置(settings)提供了定制Scrapy组件的方法,可以控制包括核心(core),插件(extension),pipeline以及spider组件。
官方文档:https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html#topics-settings-ref
(1)默认:"scrapybot"
(2)当使用startproject命令创建项目时其也被自动赋值
2、`CONCURRENT_ITEMS`
(1)默认:100
(2)Item Processor(即Item Pipeline)同时处理(每个response的)item的最大值
3、`CONCURRENT_REQUESTS`
(1)默认:16
(2)Scrapy downloader并发送请求(concurrent requests)的最大值
4、`DEFAULT_REQUEST_HEADERS`
(1)默认:
{ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', }
(2)Scrapy HTTP Request使用的默认header
5、`DEPTH_LIMIT`
(1)默认:0
(2)爬取网站最大允许的深度(depth)值。如果为0,则表示没有限制
6、`DOWNLOAD_DELAY`
(1)默认:0
(2)下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度,减轻服务器压力。同时支持小数:`DOWNLOAD_DELAY=0.25`
(3)默认情况下,Scrapy在两个请求间不等待一个固定的值, 而是使用0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY 的结果作为等待间隔
7、`DOWNLOAD_TIMEOUT`
(1)默认:180
(2)下载器超时时间(单位:秒)
8、`ITEM_PIPELINES`
(1)默认:{}
(2)保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意,值习惯设置在0~1000范围内,值越小优先级越高。
ITEM_PIPELINES = { 'mySpider.pipelines.SomethingPipeline': 300, 'mySpider.pipelines.JsonPipeline': 800, }
9、`LOG_ENABLED`
(1)默认:True
(2)是否启用logging
10、`LOG_ENCODING`
(1)默认:"utf-8"
(2)logging使用的编码
11、`LOG_LEVEL`
(1)默认:"DEBUG"
(2)log的最低级别,可选的级别有:CRITICAL、ERROR、WARNING、INFO、DEBUG
12、`USER_AGENT`
(1)默认:"Scrapy/VERSION (+http://scrapy.org)"
(2)爬取的默认User-Agent,除非被覆盖
13、`PROXIES:代理设置`
PROXIES = [ {'ip_port': '111.11.228.75:80', 'password': ''}, {'ip_port': '120.198.243.22:80', 'password': ''}, {'ip_port': '111.8.60.9:8123', 'password': ''}, {'ip_port': '101.71.27.120:80', 'password': ''}, {'ip_port': '122.96.59.104:80', 'password': ''}, {'ip_port': '122.224.249.122:8088', 'password':''}, ]
14、COOKIES_ENABLED=False
(1)禁用Cookies
15、在scrapy中使用
(1)通过from settings import ...导入
(2)在myspider.py文件中,能够通过self.settings的方式访问到:`self.settings["..."]`或`self.settings.get()`
在pipeline中,因为传入的spider对应爬虫文件本身,所有通过`spider.settings["..."]`等方式可以访问到。
16、TELNETCONSOLE_ENABLED
```
# telnet用于查看当前爬虫的信息,操作爬虫等
# 使用telnet ip port,然后通过命令操作
TELNETCONSOLE_ENABLED = True
TELNETCONSOLE_HOST = '127.0.0.1'
TELNETCONSOLE_PORT = [6023, ]
```
说明:当爬虫运行时间很长,但是你又想知道当前爬虫的运行状态时,可以使用telnet命令来连接特定端口查看
17、SCHEDULER调度器
# 爬取时,0表示深度优先Lifo(默认),1表示广度优先FiFo # 后进先出,深度优先 DEPTH_PRIORITY = 0 SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleLifoDiskQueue' SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.LifoMemoryQueue' # 先进先出,广度优先 DEPTH_PRIORITY = 1 SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue' SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue' # 调度器队列 # from scrapy.core.scheduler.Scheduler SCHEDULER = 'scrapy.core.scheduler.Scheduler'
18、访问url去重
DUPEFILTER_CLASS = 'step8_king.duplication.RepeatUrl'