SCRAPY에서 DOWNLOADER_IDDLEWARES 중간부품 구성 순서
DOWNLOADER_MIDDLEWARES = {
'discountSpider.middlewares.ProcessMiddleware':90,
'discountSpider.middlewares.ProxyMiddleware': 750,
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 751,
'discountSpider.middlewares.RandomUserAgent': 400,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}
하지만 중간부품의 순서가 중요합니다. 프로세스를 캡처하려면_request는 앞에 있을수록 일찍 통지를 받고 뒤로 순서대로 통지합니다. 의외의 말은 없습니다.하지만 캡처 프로세스라면 _response,request 요청이 완료되면response 메시지를 되돌려줍니다. 정상적으로 다운로드가 완료되면 첫 번째 중간부품으로 알림을 받고 순서를 뒤로 알립니다.그러나 요청 시간 초과, 요청이retry되면 첫 번째 알림이 전송되지 않고 scrapy 기본 중간부품의 위치에 따라 전송됩니다. 중간부품의 순서를 분배하려면 DOWNLOADER_MIDDLEWARES_BASE 설정 후 중간부품을 배치할 위치에 따라 값을 선택합니다.모든 중간부품이 다른 동작을 수행하기 때문에, 당신의 중간부품은 이전(또는 그 후)에 실행된 중간부품에 의존할 수 있기 때문에 순서가 매우 중요합니다.
예를 들어 DOWNLOADER_MIDDLEWARES_BASE에서'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 500, 사용자 정의 중간부품 번호를 100으로 설정하면 다운로드기에서 504 500 오류가 발생합니다.retry가 필요하면response 상태가retry라는 메시지를 뒤에 중간부품으로 알립니다. 중간부품의process_응답은 메시지를 받을 수 없습니다. 500번 번호부터 뒤로 통지하기 때문에 중간 부품 번호를 500번 번호로 바꾸면 메시지를 받을 수 있습니다.
또 예를 들면'scrapy.contrib.downloadermiddleware.downloadtimeout.Download Timeout Middleware': 350, 다운로드 페이지의 시간 초과 메시지를 받고 싶으면 중간부품을 350 이후에process_response가 있어야 메시지를 받을 수 있습니다.다운로드 시간이 초과되면 scrapy가 직접 scrapy를 찾을 수 있기 때문이다.contrib.downloadermiddleware.downloadtimeout.Download Timeout Middleware 모듈의 위치 350, 알림, 그리고 메시지는 뒤에 있는 400500550700 등 위치의 중간부품을 순서대로 알려줍니다.만약 당신의 중간부품의 위치가 100 따위라면, 그것은 소식을 받지 못할 것이다.
다음은 기본 중간부품의 정보를 첨부합니다
DOWNLOADER_MIDDLEWARES_BASE
{
'scrapy.contrib.downloadermiddleware.robotstxt.RobotsTxtMiddleware': 100,
'scrapy.contrib.downloadermiddleware.httpauth.HttpAuthMiddleware': 300,
'scrapy.contrib.downloadermiddleware.downloadtimeout.DownloadTimeoutMiddleware': 350,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 400,
'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 500,
'scrapy.contrib.downloadermiddleware.defaultheaders.DefaultHeadersMiddleware': 550,
'scrapy.contrib.downloadermiddleware.redirect.MetaRefreshMiddleware': 580,
'scrapy.contrib.downloadermiddleware.httpcompression.HttpCompressionMiddleware': 590,
'scrapy.contrib.downloadermiddleware.redirect.RedirectMiddleware': 600,
'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware': 700,
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 750,
'scrapy.contrib.downloadermiddleware.chunked.ChunkedTransferMiddleware': 830,
'scrapy.contrib.downloadermiddleware.stats.DownloaderStats': 850,
'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 900,
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.