Scrapy-설정

기술

Scrapy 구성 요소의 동작은 Scrapy 설정을 사용하여 수정할 수 있습니다. Scrapy 프로젝트가 여러 개인 경우 설정에서 현재 활성화 된 Scrapy 프로젝트를 선택할 수도 있습니다.

설정 지정

웹 사이트를 스크랩 할 때 사용중인 설정을 Scrapy에 알려야합니다. 이를 위해 환경 변수SCRAPY_SETTINGS_MODULE 사용되어야하며 그 값은 Python 경로 구문이어야합니다.

설정 채우기

다음 표는 설정을 채울 수있는 몇 가지 메커니즘을 보여줍니다.

Sr. 아니요 메커니즘 및 설명
1

Command line options

여기서 전달되는 인수는 다른 옵션을 재정 의하여 가장 높은 우선 순위를 갖습니다. -s는 하나 이상의 설정을 대체하는 데 사용됩니다.

scrapy crawl myspider -s LOG_FILE = scrapy.log
2

Settings per-spider

스파이더는 custom_settings 속성을 사용하여 프로젝트 설정을 재정의하는 자체 설정을 가질 수 있습니다.

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

Project settings module

여기에서 settings.py 파일의 설정 추가 또는 수정과 같은 사용자 지정 설정을 채울 수 있습니다.

4

Default settings per-command

각 Scrapy 도구 명령은 default_settings 속성에 자체 설정을 정의하여 전역 기본 설정을 재정의합니다.

5

Default global settings

이러한 설정은 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 메서드를 재정의해야합니다 . 당신은 속성을 통해 설정에 액세스 할 수 있습니다 scrapy.crawler.Crawler.settings 에 전달 from_crawler의 방법.

다음 예제는이를 보여줍니다.

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. 아니요 설정 및 설명
1

AWS_ACCESS_KEY_ID

Amazon Web Services에 액세스하는 데 사용됩니다.

기본값 : 없음

2

AWS_SECRET_ACCESS_KEY

Amazon Web Services에 액세스하는 데 사용됩니다.

기본값 : 없음

BOT_NAME

User-Agent 구축에 사용할 수있는 봇의 이름입니다.

기본값 : '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

Scrapy의 HTTP 요청에 사용되는 기본 헤더입니다.

기본값-

{  
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,
	*/*;q=0.8', 'Accept-Language': '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

DOWNLOADER

크롤링 프로세스에 사용되는 다운로더입니다.

기본값 : '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

중복 된 요청을 감지하고 필터링하는 데 사용되는 클래스입니다.

기본값 : 'scrapy.dupefilters.RFPDupeFilter'

28

DUPEFILTER_DEBUG

이 설정은 true로 설정된 경우 모든 중복 필터를 기록합니다.

기본값 : False

29

EDITOR

edit 명령을 사용하여 스파이더를 편집하는 데 사용됩니다.

기본값 : 환경에 따라 다름

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

로깅 출력에 사용할 파일의 이름입니다.

기본값 : 없음

37

LOG_FORMAT

로그 메시지를 형식화 할 수있는 문자열입니다.

기본값 : '% (asctime) s [% (name) s] % (levelname) s : % (message) s'

38

LOG_DATEFORMAT

날짜 / 시간을 형식화 할 수있는 문자열입니다.

기본값 : '% Y- % m- % d % H : % M : % S'

39

LOG_LEVEL

최소 로그 수준을 정의합니다.

기본값 : 'DEBUG'

40

LOG_STDOUT

이 설정을 true로 설정하면 모든 프로세스 출력이 로그에 나타납니다.

기본값 : False

41

MEMDEBUG_ENABLED

메모리 디버깅을 사용할지 여부를 정의합니다.

기본값 : False

42

MEMDEBUG_NOTIFY

메모리 디버깅이 활성화 된 경우 특정 주소로 전송되는 메모리 보고서를 정의합니다.

기본값: []

43

MEMUSAGE_ENABLED

Scrapy 프로세스가 메모리 제한을 초과 할 때 메모리 사용을 활성화할지 여부를 정의합니다.

기본값 : False

44

MEMUSAGE_LIMIT_MB

허용되는 메모리의 최대 한계 (MB)를 정의합니다.

기본값 : 0

45

MEMUSAGE_CHECK_INTERVAL_SECONDS

간격의 길이를 설정하여 현재 메모리 사용량을 확인하는 데 사용됩니다.

기본값 : 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

Scrapy는 true로 설정된 경우 robots.txt 정책을 준수 합니다 .

기본값 : False

56

SCHEDULER

크롤링 목적으로 사용할 스케줄러를 정의합니다.

기본값 : 'scrapy.core.scheduler.Scheduler'

57

SPIDER_CONTRACTS

거미를 테스트하기 위해 거미 계약을 맺은 프로젝트의 사전입니다.

기본값: {}

58

SPIDER_CONTRACTS_BASE

Scrapy에서 기본적으로 활성화되는 Scrapy 계약을 보관하는 사전입니다.

기본값-

{ 
   'scrapy.contracts.default.UrlContract' : 1, 
   'scrapy.contracts.default.ReturnsContract': 2, 
}
59

SPIDER_LOADER_CLASS

스파이더를로드하기 위해 SpiderLoader API 를 구현하는 클래스를 정의합니다 .

기본값 : 'scrapy.spiderloader.SpiderLoader'

60

SPIDER_MIDDLEWARES

거미 미들웨어를 담고있는 사전입니다.

기본값: {}

61

SPIDER_MIDDLEWARES_BASE

Scrapy에서 기본적으로 활성화되는 스파이더 미들웨어를 보관하는 사전입니다.

기본값-

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

SPIDER_MODULES

Scrapy가 찾을 거미를 포함하는 모듈 목록입니다.

기본값: []

63

STATS_CLASS

통계 를 수집하기 위해 Stats Collector API를 구현하는 클래스입니다 .

기본값 : 'scrapy.statscollectors.MemoryStatsCollector'

64

STATS_DUMP

이 설정을 true로 설정하면 통계가 로그에 덤프됩니다.

기본값 : True

65

STATSMAILER_RCPTS

거미가 스크래핑을 마치면 Scrapy는이 설정을 사용하여 통계를 보냅니다.

기본값: []

66

TELNETCONSOLE_ENABLED

telnetconsole을 활성화할지 여부를 정의합니다.

기본값 : True

67

TELNETCONSOLE_PORT

텔넷 콘솔 용 포트를 정의합니다.

기본값 : [6023, 6073]

68

TEMPLATES_DIR

새 프로젝트를 만드는 동안 사용할 수있는 템플릿이 포함 된 디렉터리입니다.

기본값 : 스크래피 모듈 내부의 템플릿 디렉토리

69

URLLENGTH_LIMIT

크롤링 된 URL에 허용되는 URL 길이의 최대 제한을 정의합니다.

기본값 : 2083

70

USER_AGENT

사이트를 크롤링하는 동안 사용할 사용자 에이전트를 정의합니다.

기본값 : "Scrapy / VERSION (+ http : //scrapy.org)"

다른 Scrapy 설정을 보려면이 링크 로 이동 하십시오 .