2014-10-21 3 views
2

편집 :
이것은 치료의 이전 버전과 중복되지 않습니다. 최근 수년간 치료법이 바뀌 었으며 현재 버전은 0.24구조 이미지 다운로드 치료 파이프 라인에서

입니다. 치료법은 개발 과정에서 극적으로 발전해 왔습니다. 치료에 관한 stackoverflow의 대답의 대부분은 구식입니다.

저는 0.24.4의 치료법을 사용하고 있으며 각 링크마다 별도의 방식으로 이미지를 다운로드하고 싶습니다. 지금은 치료 문서를 사용하여 이미지를 다운로드 할 수 있지만 폴더는 하나뿐입니다.

아래 코드를 사용하고 있으므로 각 URL마다 별도의 폴더에 저장되지만 얻을 수는 없습니다. 이 코드는 실행되지 않으며 pipelines.py에 있습니다. 이미지 파이프 라인의 기본 동작 만 실행됩니다. 즉 항목 [ 'image_urls']에있는 모든 URL을 다운로드합니다. 올바른 궤도에

pipelines.py

import scrapy 
from scrapy.contrib.pipeline.images import ImagesPipeline 
from scrapy.exceptions import DropItem 
import urlparse 
import urllib 

class RecursiveScrapPipeline(object): 

    """Custom Image to save in Structured folder """ 

    def process_item(self, item, spider): 
     #item currently is image name 
     image_guid = item 

     return "%s/full/%s.jpg"% (id,image_guid) 
    #this should work , exactly as per documentation 



    def get_media_requests(self, item, info): 

     for image_url in item['image_urls']: 
      yield scrapy.Request(image_url,meta={'id':item['Property_name']}) 

암 I? 해결책은 무엇일까요?

+0

복제본 : [Scrapy : 이미지를 다운로드하는 URL을 기반으로 다운로드 한 이미지 중 폴더 구조 만들기] (http://stackoverflow.com/questions/12956653/scrapy-create-folder-structure-out- URL을 기반으로 다운로드 한 이미지) –

+1

@Chris는 이전 버전입니다. 2 세. 나는 또한 질문에 언급 된 최근 버전을 사용하고 있습니다. – igaurav

답변

2

저는 실제로이 파이프 라인에서 무엇을 하려는지 확신 할 수 없지만 뭔가 잘못되었습니다. 내가하는 일을 완전히 오해 한 것일 수 있으므로이 경우 구현 세부 사항을 자세히 설명하십시오. 한편

, 여기에 문제가 될 수있는 몇 가지 있습니다 :

  1. 당신의 목표는이 파이프 라인의 기본 동작을 변경하는 경우, 당신은의 ImagesPipeline에서 상속해야합니다. settings.py에서 파이프 라인이 활성화되어 있는지 확인해야합니다.

  2. process_item() 메서드는 Item() 개체를 반환하거나 DropItem() 예외를 발생시켜야하지만 문자열을 반환해야합니까? 그리고 그것을 악화시키기 위해 문자열에 항목 객체를 암시 적으로 캐스팅하여 만든 문자열입니까? 이런 맥락에서 이것은 의미가 없습니다. ImagePipeline에서 해당 메서드를 재정의해서는 안된다고 생각하면 더 적습니다.

  3. item_completed() 인 경우 구현이 없습니다. 이는 단일 항목에 대한 모든 이미지 요청이 완료되었을 때 (완료된 다운로드 또는 어떤 이유로 실패한 경우) 호출되는 메소드입니다. 거기에서 이미지가 다운로드 된 경로를 볼 수 있으며 필요하면 이동합니다.

자세한 내용은 공식 설명서에서 Downloading Item images의 공식 설명서를 읽으십시오.

관련 문제