2016-09-28 2 views
3

나는 치료에 초보자입니다. here에서 이미지를 다운로드하려고합니다. 나는 Official-Docthis article을 따라 갔다. 나는이 두 파일이 좋은 생각Scrapy를 사용하여 이미지를 다운로드하는 방법?

import scrapy 
from scrapy.item import Item 

class ShopcluesItem(scrapy.Item): 
    # define the fields for your item here like: 
    # name = scrapy.Field() 
    pass 

class ImgData(Item): 
    image_urls=scrapy.Field() 
    images=scrapy.Field() 

: 같은

BOT_NAME = 'shopclues' 

SPIDER_MODULES = ['shopclues.spiders'] 
NEWSPIDER_MODULE = 'shopclues.spiders' 

ROBOTSTXT_OBEY = True 

ITEM_PIPELINES = { 
    'scrapy.contrib.pipeline.images.ImagesPipeline':1 
} 

IMAGES_STORE="home/pr.singh/Projects" 


items.py 보이는 : 같은

내 settings.py 보인다. 그러나 나는 이미지를 얻기 위해 정확한 스파이더를 쓸 수 없다. 이미지 URL을 가져올 수 있지만 imagePipeline을 사용하여 이미지를 저장하는 방법을 알지 못합니다. 내가 this-article을 다음과 거미를 작성했습니다

from shopclues.items import ImgData 
import scrapy 
import datetime 


class DownloadFirstImg(scrapy.Spider): 
    name="DownloadfirstImg" 
    start_urls=[ 
    'http://www.shopclues.com/canon-powershot-sx410-is-2.html', 
    ] 

    def parse (self, response): 
     url= response.css("body div.site-container div#container div.ml_containermain div.content-helper div.aside-site-content div.product form#product_form_83013851 div.product-gallery div#product_images_83013851_update div.slide a#det_img_link_83013851_25781870") 

     yield scrapy.Request(url.xpath('@href').extract(),self.parse_page) 

     def parse_page(self,response): 
      imgURl=response.css("body div.site-container div#container div.ml_containermain div.content-helper div.aside-site-content div.product form#product_form_83013851 div.product-gallery div#product_images_83013851_update div.slide a#det_img_link_83013851_25781870::attr(href)").extract() 

      yield { 
      ImgData(image_urls=[imgURl]) 
      } 

: 같은
내 거미 보인다. 그러나 나는 아무것도 얻지 못하고있다. 나는 내 거미를 scrapy crawl DownloadfirstImg -o img5.json 으로 실행하지만 나는 어떤 json이나 이미지도 얻지 못하고 있습니까?
URL 인 경우 이미지를 잡는 방법에 대한 도움말. 나도 파이썬으로 일한 적이 없기 때문에 상황이 훨씬 복잡해 보입니다. 좋은 자습서에 대한 링크가 도움이 될 수 있습니다. TIA

답변

2

이미지에 대한 요청을 생성하는 이유와 이미지 파이프 라인이 나머지 작업을 수행하는 이유에 대해 잘 모릅니다. 필요한 모든 것입니다.

def parse (self, response): 
    url= response.css("body div.site-container div#container div.ml_containermain div.content-helper div.aside-site-content div.product form#product_form_83013851 div.product-gallery div#product_images_83013851_update div.slide a#det_img_link_83013851_25781870") 
    yield ImgData(image_urls=[url.xpath('@href').extract_first()]) 
+0

시간이 오래 걸렸습니다. 심지어 나는 내가하고있는 일을 혼란 스러웠다. 그들의 설명서 이외의 좋은 튜토리얼에 대한 링크를 제공 할 수 있습니까? 또한이 코드는 이미지를 삭제하고 다시 시도한 후 처음으로 작동했습니다. Spider 오류 처리 (referer : 없음)'? 가능한 이유는 무엇일까요? BTW, 도와 줘서 고마워. :) –

+0

@PrashantPrabhakarSingh 그 오류가 발생하면 추적 오류가 무엇이 잘못되었는지 알려줍니다. 오류의 마지막 줄은 무엇입니까? –

+0

잊어 버려. 내가 디렉토리에 손상된 파일을 가지고 있었는데, 그 중 하나를 삭제하고 모든 것이 잘 작동했습니다. 내가 작성한 것을 알지 못하기 때문에 코드를 디버그 할 수 없었고, 코드는 복사 - 붙여 넣기와 같은 것이었다. 거기에 좋은 자습서/블로그 (그들의 설명서를 제외하고) 사용할 수 있습니까? 고마워요. –

관련 문제