开发手册 欢迎您!
软件开发者资料库

Scrapy - 设置

Scrapy设置 - 从简单和简单的步骤学习Scrapy,从基本到高级概念,包括概述,环境,命令行工具,蜘蛛,选择器,项目,项目加载器,Shell,项目管道,Feed导出,请求和响应,链接提取器,设置,例外,创建项目,定义项目,第一个蜘蛛,抓取,提取项目,使用项目,以下链接,Scraped数据,日志记录,统计信息收集,发送电子邮件,Telnet控制台,Web服务。

描述

可以使用Scrapy设置修改Scrapy组件的行为.如果您有多个Scrapy项目,设置还可以选择当前处于活动状态的Scrapy项目.

指定设置

您必须通知Scrapy您在废弃网站时使用的设置.为此,应使用环境变量 SCRAPY_SETTINGS_MODULE ,其值应采用Python路径语法.

填充设置

下表显示了一些可以填充设置的机制;

Sr.No机制&说明
1

命令行选项

这里,通过覆盖其他选项,传递的参数优先级最高. -s用于覆盖一个或多个设置.

scrapy crawl myspider -s LOG_FILE = scrapy.log
2

每蜘蛛设置

蜘蛛可以拥有自己的设置,使用属性custom_settings覆盖项目.

class DemoSpider(scrapy.Spider):    name = 'demo'     custom_settings = {       'SOME_SETTING': 'some value',    }
3

项目设置模块

在这里,您可以填充自定义设置,例如添加或修改settings.py文件中的设置.

4

每个命令的默认设置

每个Scrapy工具命令在defau中定义自己的设置lt_settings属性,覆盖全局默认设置.

5

默认全局设置

这些设置可在scrapy.settings.default_settings模块中找到.

访问设置

它们可以通过self.settings并在初始化后设置在基本蜘蛛中.

以下示例演示了这一点.

class DemoSpider(scrapy.Spider):    name = 'demo'    start_urls = ['http://example.com']     def parse(self, response):       print("Existing settings: %s" % self.settings.attributes.keys())

要在初始化蜘蛛之前使用设置,您必须在您的蜘蛛的 _init _()方法中覆盖 from_crawler 方法.您可以通过传递给 from_crawler 方法的属性 scrapy.crawler.Crawler.settings 来访问设置.

以下示例演示了这一点./p>

class MyExtension(object):    def __init__(self, log_is_enabled = False):       if log_is_enabled:          print("Enabled log")          @classmethod    def from_crawler(cls, crawler):       settings = crawler.settings       return cls(settings.getbool('LOG_ENABLED'))

设置名称的基本原理

设置名称作为前缀添加到它们配置的组件中.例如,对于robots.txt扩展名,设置名称可以是ROBOTSTXT_ENABLED,ROBOTSTXT_OBEY,ROBOTSTXT_CACHEDIR等.

内置设置参考

下表显示了Scrapy : 的内置设置;


Sr.No设置&说明
1

AWS_ACCESS_KEY_ID

它用于访问Amazon Web Services.

默认值:无

2

AWS_SECRET_ACCESS_KEY

它用于访问Amazon Web Services.

默认值:无

3

BOT_NAME

这是可以用于构建User-Agent的bot的名称.

默认值:'scrapybot'

4

CONCURRENT_ITEMS

项目处理器中用于并行处理的最大现有项目数.

默认值:100

5

CONCURRENT_REQUESTS

Scrapy下载程序执行的最大现有请求数.

默认值:16

6

CONCURRENT_REQUESTS_PER_DOMAIN

同时为任何单个域执行的最大现有请求数.

默认值:8

7

CONCURRENT_REQUESTS_PER_IP

同时对任何单个IP执行的最大现有请求数.

默认值:0

8

DEFAULT_ITEM_CLASS

这是一个用于表示项目的类.

默认值:'scrapy.item.Item'

9

DEFAULT_REQUEST_HEADERS

这是用于HTTP的默认标头Scrapy的请求.

默认值 :

  {'接受':'文本/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','接受语言':'en',}
10

DEPTH_LIMIT

蜘蛛抓取任何网站的最大深度.

默认值:0

11

DEPTH_PRIORITY

这是一个整数,用于根据深度改变请求的优先级.

默认值: 0

12

DEPTH_STATS

它说明是否收集深度统计数据.

默认值:True

13

DEPTH_STATS_VERBOSE

启用此设置后,会在每个详细深度的统计信息中收集请求数.

默认值:False

14

DNSCACHE_ENABLED

它用于在内存缓存中启用DNS.

默认值:True

15

DNSCACHE_SIZE

它定义了内存缓存中DNS的大小.

默认值:10000

16

DNS_TIMEOUT

它用于设置DNS处理查询的超时时间.

默认值:60

17

下载程序

这是一个用于抓取过程的下载程序.

默认值:'scrapy.core.downloader.Downloader'

18

DOWNLOADER_MIDDLEWARES

这是一本包含下载中间件的字典和他们的订单.

默认值:{}

19

DOWNLOADER_MIDDLEWARES_BASE

它是一个字典,其中包含默认情况下启用的下载程序中间件。

默认值:

{ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, }
20

DOWNLOADER_STATS

此设置用于启用下载程序统计信息.

默认值:True

21

DOWNLOAD_DELAY

它定义下载程序从网站下载页面之前的总时间.

默认值:0

22

DOWNLOAD_HANDLERS

这是一个包含下载处理程序的字典.

默认值:{}

23

DOWNLOAD_HANDLERS_BASE

这是一个包含默认启用的下载处理程序的字典.

默认值 :

  {'file':'scrapy.core.downloader.handlers.file.FileDownloadHandler',}
24

DOWNLOAD_TIMEOUT

这是下载程序在超时前等待的总时间.

默认值:180

25

DOWNLOAD_MAXSIZE

这是下载者下载的最大响应大小.

默认值:1073741824(1024MB)

26

DOWNLOAD_WARNSIZE

它定义下载警告的响应大小.

默认值:33554432(32MB)

27

DUPEFILTER_CLASS

这是一个用于检测和过滤重复请求的类./p>

默认值:'scrapy.dupefilters.RFPDupeFilter'

28

DUPEFILTER_DEBUG

此设置记录所有重复的过滤器设置为true.

默认值:False

29

编辑

它用于编辑蜘蛛使用编辑命令.

默认值:取决于环境

30

EXTENSIONS

这是一本有扩展名的字典在项目中启用.

默认值:{}

31

EXTENSIONS_BASE

这是一本字典内置扩展程序.

默认值:{'scrapy.extensions.corestats.CoreStats':0,}

32

FEED_TEMPDIR

这是一个用于设置抓取工具的自定义文件夹的目录临时文件可以存储.

33

ITEM_PIPELINES

这是一个有管道的字典.

默认值: {}

34

LOG_ENABLED

它定义是否启用日志记录.

默认值:True

35

LOG_ENCODING

它定义了用于记录的编码类型.

默认值:' utf-8'

36

LOG_FILE

这是用于记录输出的文件的名称.

D.有效值:无

37

LOG_FORMAT

这是一个字符串,用于格式化日志消息.

默认值:'%(asctime)s [%(名称)s]%(级别名称)s:%(消息)s'

38

LOG_DATEFORMAT

这是一个字符串,用于格式化日期/时间.

默认值:'%Y-%m-%d%H:%M:%S'

39

LOG_LEVEL

它定义了最小日志级别.

默认值:'DEBUG'

40

LOG_STDOUT

此设置如果设置为true,则所有过程输出都将显示在日志中.

默认值:False

41

MEMDEBUG_ENABLED

它定义了我f要启用内存调试.

默认值:False

42

MEMDEBUG_NOTIFY

它定义了启用内存调试时发送到特定地址的内存报告.

默认值:[]

43

MEMUSAGE_ENABLED

它定义了当Scrapy进程超出内存限制时是否启用内存使用情况.

默认值:False

44

MEMUSAGE_LIMIT_MB

它定义了允许的内存最大限制(以兆字节为单位).

默认值:0

45

MEMUSAGE_CHECK_INTERVAL_SECONDS

它用于通过设置间隔的长度来检查当前的内存使用情况.

Defaul t值:60.0

46

MEMUSAGE_NOTIFY_MAIL

当内存达到限制时,它用于通知电子邮件列表.

默认值:False

47

MEMUSAGE_REPORT

它定义是否在关闭每个蜘蛛时发送内存使用情况报告.

默认值:False

48

MEMUSAGE_WARNING_MB

它定义了在发送警告之前允许的总内存.

默认值:0

49

NEWSPIDER_MODULE

这是一个使用genspider创建新蜘蛛的模块命令.

默认值:''

50

RANDOMIZE_DOWNLOAD_DELAY

它定义了Scrapy在从网站下载请求时等待的随机时间量.

默认值:True

51

REACTOR_THREADPOOL_MAXSIZE

它定义了反应堆线程池的最大大小.

默认值:10

52

REDIRECT_MAX_TIMES

它定义了重定向请求的次数.

默认值:20

53

REDIRECT_PRIORITY_ADJUST

设置此设置后,调整请求的重定向优先级.

默认值:+2

54

RETRY_PRIORITY_ADJUST

设置此设置后,调整请求的重试优先级.

默认值:-1

55

ROBOTSTXT_OBEY

当设置为 true 时,Scrapy服从robots.txt政策.

默认值:False

56

SCHEDULER

它定义了用于爬行目的的调度程序.

默认值:'scrapy.core.scheduler.Scheduler'

57

SPIDER_CONTRACTS

这是一个项目中的字典,有蜘蛛合同来测试蜘蛛.

默认值:{}

58

SPIDER_CONTRACTS_BASE

这是一个包含Scrapy合约的字典,默认情况下在Scrapy中启用.

默认值 : 去;

  {'sprapy.contracts.default.UrlContract':1,'scherapy.contracts.defau lt.ReturnsContract':2,}
59

SPIDER_LOADER_CLASS

它定义了一个实现

默认值:'scrapy.spiderloader.SpiderLoader'

60

SPIDER_MIDDLEWARES

这是一本包含蜘蛛中间件的字典.

默认值:{}

61

SPIDER_MIDDLEWARES_BASE

这是一个包含蜘蛛中间件的字典,默认情况下在Scrapy中启用.

默认值 :

{'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware':50,}
62

SPIDER_MODULES

这是一个列表o包含Scrapy将寻找的蜘蛛的f模块.

默认值:[]

63

STATS_CLASS

It是一个实现 Stats Collector API来收集统计数据的类.

默认值:'scrapy.statscollectors.MemoryStatsCollector'

64

STATS_DUMP

此设置设置为true时,将统计信息转储到日志中.

默认值:True

65

STATSMAILER_RCPTS

一旦蜘蛛完成抓取,Scrapy会使用此设置发送统计数据.

默认值:[]

66

TELNETCONSOLE_ENABLED

它定义是否启用telnetconsole.

默认值:True

67

TELNETCONSOLE_PORT

它为telnet定义了一个端口安慰.

默认值:[6023,6073]

68

TEMPLATES_DIR

这是一个包含模板的目录在创建新项目时使用.

默认值:scrapy模块内的模板目录

69

URLLENGTH_LIMIT

它定义了抓取网址允许的网址长度的最大限制.

默认值:2083

70

USER_AGENT

它定义了在抓取网站时使用的用户代理.

默认值:"Scrapy/VERSION(+ http://scrapy.org)"

对于其他Scrapy设置,请转到此链接.