Scrapy 프록시 설정을 CrawlerProcess 스크립트에 로드하기
독립 실행형 런처가 scrapy crawl과 동일한 다운로더 미들웨어를 사용해야 할 때 get_project_settings()를 CrawlerProcess에 전달하십시오.
스파이더는 scrapy crawl 아래에서 기대한 프록시를 사용할 수 있지만 Python 스크립트로 실행하면 곧바로 연결됩니다. 프록시 서버를 바꾸기 전에 그 스크립트가 설정을 어떻게 구성하는지 확인하십시오.
기존 Scrapy 프로젝트와 등록된 스파이더의 경우:
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
process = CrawlerProcess(settings=settings)
process.crawl('catalog')
process.start()
catalog를 프로젝트의 스파이더 이름으로 바꾸십시오. 프로젝트는 scrapy.cfg을 통해, 또는 가져올 수 있는 설정 모듈을 가리키는 올바르게 설정된 SCRAPY_SETTINGS_MODULE을 통해 검색 가능해야 합니다.
스크립트가 스파이더 클래스도 가져온다는 이유만으로 CrawlerProcess()만 생성한다고 해서 프로젝트 설정 파일이 가져와지지는 않습니다. 따라서 DOWNLOADER_MIDDLEWARES으로 활성화한 사용자 지정 미들웨어가 해당 실행에서 빠질 수 있습니다.
설정을 로드하면 구성된 구성 요소가 제공될 뿐, 프록시 주소를 만들어 내지는 않습니다. Scrapy의 HTTP 프록시 미들웨어는 여전히 일반 환경 프록시나 명시적 request.meta['proxy'] 값이 필요합니다. HTTPPROXY_ENABLED이 이를 비활성화하지 않았는지 확인하십시오. 허용된 공개 페이지 크롤링의 경우 HTTP 프록시 목록이 해당 메타데이터나 환경을 통해 전달되는 HTTP 프록시 값의 후보를 제공합니다.
런처가 로드한 설정과 활성 미들웨어를 명령줄 실행과 비교하십시오. 일치하면 선택한 요청의 프록시 메타데이터와 실제 전송 오류를 가지고 계속 진행하십시오.