使用scrapy下载图像的正确方法

时间:2013-05-16 10:42:29

标签: python scrapy

我正在从此site下载图片。但问题是产品有三个图像,一个用于本网站,其他图像用于产品特定页面。我可以从这个网站下载图像,但我想下载其余的图像,但他们的URL是在产品特定的页面上给出的..我们可以通过哪种方式一次下载所有图像意味着我想要一次性收集产品相关数据......

喜欢在parse方法中发出请求以同时读取产品页面并提取图像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()

因此,当我从目录页面下载图像时,我也想下载这些图像..就像上面我正在用解析方法做...有什么方法可以做到这一点......很容易......单向是从JSON文件中读取产品URL ...然后提取它们......是他们的任何其他方式....

1 个答案:

答案 0 :(得分:2)

不要return item方法,parse yield request prodcuturl然后yield/return {在item

中{1}}
product_detail_page