배포된 Scrapy 프로젝트에 프록시 목록 포함 및 로드
Scrapy 프록시 목록 리소스를 배포본에 포함하고 배포된 작업 디렉터리 대신 패키지 위치로 로드합니다.
개발 체크아웃 옆의 프록시 파일이 크롤러의 배포 패키지에 자동으로 있는 것은 아닙니다. 작업은 두 가지입니다. 바이트를 배포본에 포함한 다음 설치된 패키지에서 찾는 것입니다.
Python 패키지 안에 crawl_app/resources/proxies.txt가 있는 Setuptools 프로젝트라면 pyproject.toml 항목으로 포함할 수 있습니다:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
이를 프로젝트의 기존 패키지 구성과 병합하세요. 다른 빌드 백엔드에는 자체 데이터 포함 인터페이스가 있습니다.
엔드포인트 문자열을 사용할 수 있는 미들웨어의 경우 Python 3.11+에서 패키지 리소스를 직접 읽을 수 있습니다:
from importlib.resources import files
text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]
실제 패키지 이름을 사용하고 리더에서 예상되는 URL 형식을 검증하세요. 배포 가능한 공개 엔드포인트 데이터에는 미들웨어가 기대하는 프로토콜과 URL 형식으로 무료 프록시 목록의 주소를 사용하세요. 조회는 배포본의 현재 작업 디렉터리에 의존하지 않습니다.
서드파티 PROXY_LIST 설정은 이러한 문자열 대신 파일 시스템 경로를 요구할 수 있습니다. 해당 인터페이스에 importlib.resources.as_file을 사용할 때는 미들웨어가 추출된 파일을 필요로 하는 동안 컨텍스트를 열어 두세요. 컨텍스트를 닫은 뒤 임시 경로를 반환하면 리소스를 잃을 수 있습니다.
자격 증명이 있는 프로덕션 목록은 배포용으로 의도된 비밀 또는 구성 저장소에 보관하세요. 패키지 데이터는 배포 가능한 엔드포인트 데이터에 적합하며, 코드와 함께 번들된 모든 것이 비공개로 유지된다는 가정은 아닙니다.