2013-05-16 26 views
3

我正在從此下載圖像site。但問題在於產品有三個圖像在本網站上使用,其他圖像在產品特定頁面上使用。我可以從這個網站下載圖片,但我想下載其餘的圖片,但他們的URL是在產品特定的頁面.. ..他們的任何方式,我可以一次下載所有的圖像意味着我想一次性收集產品相關數據......使用scrapy下載圖像的正確方法

就像在解析方法中請求一樣,讀取產品頁面並同時提取圖像URLS。以下是我的代碼解析方法。

class ESpider(BaseSpider): 
    name = "eSpider" 
    allowed_domains = ["1click1call.com"] 
    start_urls = "http://1click1call.com/Jeans-Shirts-Tshirts-Trousers" 

    def parse(self, response):      
     hxs = HtmlXPathSelector(response)   
     sites = hxs.select('//div[@class="bord"]') 
     items = [] 
     for site in sites: 
      item = EscraperItem() 
      item['productSite'] = "http://1click1call.com/" 
      item['productPrice'] = site.select('div[@class="price"]').extract()    
      item['productURL'] = site.select('div[@class="image"]/a/@href').extract() 
      item['productTitle'] = site.select('div[@class="name"]/a/text()').extract() 
      item['productImage'] = site.select('div[@class="image"]/a/img/@src').extract() 
      item['productDesc'] = site.select('div[@class="description"]/text()').extract() 
      item['image_urls'] = item['productImage'] 
      items.append(item) 

     return items 

例如這款產品page 他們是四象,我想在同一時間提取所有這些圖片我正在爬行這種product catalog

來提取我使用使用這些特定產品圖片:

hxs.select('//div[@class="left"]//div[@class="image"]/a/@href').extract() 
hxs.select('//div[@class="left"]//div[@class="image"]/a/img/@src').extract() 
hxs.select('//div[@class="left"]//div[@class="image-additional"]/a/img/@src').extract() 
hxs.select('//div[@class="left"]//div[@class="image-additional"]/a/@href').extract() 

所以我想下載這些圖片,以及當我從目錄page..like下載圖像上面,我在解析方法正在做的...有沒有這樣做的任何方式它...很容易...一種方法是從JSON文件中讀取產品URL ...然後提取它們...是他們的任何其他方式來做它...

回答

2

不要returnitemparse的方法,但在yieldproduct_detail_page

def parse(self, response):      
     hxs = HtmlXPathSelector(response)   
     sites = hxs.select('//div[@class="bord"]') 
     items = [] 
     for site in sites: 
      item = EscraperItem() 
      item['productSite'] = "http://1click1call.com/" 
      item['productPrice'] = site.select('div[@class="price"]').extract()    
      item['productURL'] = site.select('div[@class="image"]/a/@href').extract() 
      item['productTitle'] = site.select('div[@class="name"]/a/text()').extract() 
      item['productImage'] = site.select('div[@class="image"]/a/img/@src').extract() 
      item['productDesc'] = site.select('div[@class="description"]/text()').extract() 
      item['image_urls'] = item['productImage'] 
      yield Request(item['productURL'][0], 
          meta={'item':item}, 
          callback=self.product_detail_page) 


def product_detail_page(self,response): 
    hxs=HtmlXpathSelector(response) 
    item=response.request.meta['item'] 
    # add all images url's in item['image_urls'] 
    yield item 
一個 requestprodcuturl然後 yield/return item