Scrapy 이미지 요청에 프록시 연결하기
ImagesPipeline이 만드는 Requests를 꾸며, 파이프라인의 요청 로직을 다시 만들지 않고도 이미지 다운로드가 프록시를 받도록 합니다.
from scrapy.pipelines.images import ImagesPipeline
class ProxiedImagesPipeline(ImagesPipeline):
def get_media_requests(self, item, info):
for request in super().get_media_requests(item, info):
request.meta['proxy'] = 'http://proxy.example:8080'
yield request
Scrapy 2.13.3에서는 ITEM_PIPELINES의 표준 ImagesPipeline 항목을 이 하위 클래스의 가져오기 경로로 바꾸십시오. IMAGES_STORE와 다른 설정은 유지합니다.
부모를 호출하면 구성된 이미지 URL 필드와 콜백이 보존됩니다. 하위 클래스는 요청 경로만 추가하며, 이를 활성화된 HttpProxyMiddleware가 소비합니다. 각 이미지 URL은 그대로 목적지입니다. 프록시 자격 증명이 없는 새 공개 이미지 요청은 해당 경로가 허용될 때 HTTP 프록시 목록의 항목을 사용할 수 있습니다.
페이지 요청은 자체 정책을 유지합니다. 전역 프록시 환경에서는 이 릴리스에서 meta={'proxy': None}가 선택한 페이지 요청을 직접 연결로 만듭니다.
다운로드가 실제로 발행되었는지 확인하십시오. 파이프라인 캐시 적중은 네트워크 요청을 피할 수 있습니다. 새 전송의 경우 완료된 이미지의 결과 항목을 요청한 URL과 비교하십시오. 성공한 작업은 거기에 나타나지만, 실패하면 원래 이미지 URL 필드가 채워진 채로 남을 수 있습니다. 누락된 결과는 다운로더 로그와 선택한 프록시를 통해 추적하십시오.