2016-09-28 70 views
3

我是scrapy的新手。我正試圖從here下載圖像。我跟着Official-Docthis article
如何使用Scrapy下載圖像?

我的settings.py樣子:

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樣子:

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() 

我認爲這兩個文件都不錯。但我無法寫出正確的蜘蛛來獲取圖像。我可以抓取圖片網址,但不知道如何使用imagePipeline存儲圖片。
我的蜘蛛看起來像:

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]) 
      } 

我已經寫了下面的this-article蜘蛛。但我沒有得到任何東西。我運行我的蜘蛛scrapy crawl DownloadfirstImg -o img5.json ,但我沒有得到任何json或任何圖像?
如何獲取圖像的任何幫助,如果它的網址是已知的。我從來沒有使用過python,所以對我來說看起來很複雜。任何優秀教程的鏈接可能會有幫助。 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

大,那幾秒鐘內工作。即使我對我在做什麼感到困惑,但並不確定這一切是如何運作的。你能否提供除文檔以外的一些優秀教程的鏈接。此外,該代碼工作的第一次,之後我刪除的圖像,並試圖再次我得到'蜘蛛錯誤處理(引薦:無)'?可能的原因是什麼?順便說一句,感謝幫助:) –

+0

@PrashantPrabhakarSingh的錯誤發生後回溯告訴你什麼是錯的。錯誤的最後一行是什麼? –

+0

忘記它。我在目錄中有一個損壞的文件,刪除了一個,一切正常。我無法調試我的代碼,因爲即使我不知道我寫了什麼,我的代碼只是一種複製粘貼。有沒有好的教程/博客可以開始(除了他們的文檔)?謝謝你。 –