2013-05-16 2 views
3

site에서 이미지를 다운로드 중입니다. 하지만 문제는 제품에 3 개의 이미지 1 개가이 사이트에서 사용되고 나머지는 제품 특정 페이지에서 사용된다는 것입니다. 나는이 사이트에서 이미지를 다운로드 할 수 있지만 이미지의 나머지 부분도 다운로드하고 싶지만 제품의 특정 페이지에 URL이 주어져있다. 나는 한 번에 모든 이미지를 다운로드 할 수있는 방법이있다. 한 번에 제품 관련 데이터를 수집하려면 ...치료법을 사용하여 이미지를 다운로드하는 올바른 방법

파스 방식으로 제품 페이지를 읽고 이미지 URL을 동시에 추출하도록 요청하는 것을 좋아합니다. 아래는 내 코드 구문 분석 메서드입니다. 이 제품에서 예를 들어

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 
에서 다음 yield/return item prodcuturl위한 request로부터
관련 문제