十一、Scrapy的Settings

  Scrapy设置(settings)提供了定制Scrapy组件的方法,可以控制包括核心(core),插件(extension),pipeline以及spider组件。

  官方文档:https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html#topics-settings-ref

1、`BOT_NAME`

  (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'

原文地址:https://www.cnblogs.com/nuochengze/p/12877058.html