2013-04-16 38 views
7

Tôi đang cố gắng tải xuống hình ảnh qua thông tin. Dưới đây là file khác nhau của tôi:Tải xuống hình ảnh trong scrapy

items.py

class DmozItem(Item): 
     title = Field() 
     image_urls = Field() 
     images = Field() 

settings.py

BOT_NAME = 'tutorial' 

SPIDER_MODULES = ['tutorial.spiders'] 
NEWSPIDER_MODULE = 'tutorial.spiders' 
ITEM_PIPELINES = ['scrapy.contrib.pipeline.images.ImagesPipeline'] 
IMAGES= '/home/mayank/Desktop/sc/tutorial/tutorial' 

nhện

class DmozSpider(BaseSpider): 
    name = "wikipedia" 
    allowed_domains = ["wikipedia.org"] 
    start_urls = [ 
     "http://en.wikipedia.org/wiki/Pune" 
    ] 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     items = [] 
     images=hxs.select('//a[@class="image"]') 
     for image in images: 
       item = DmozItem() 
       link=image.select('@href').extract()[0] 
       link = 'http://en.wikipedia.com'+link 
       item['image_urls']=link 
       items.append(item) 

Mặc dù tất cả các vị trí I đường ống của tôi không nhận được kích hoạt. Xin vui lòng giúp đỡ. Tôi mới vào khuôn khổ này.

+0

Bạn đã cài đặt PIL (Thư viện hình ảnh Python) chưa? Đó là điều kiện tiên quyết để tải xuống hình ảnh: http://doc.scrapy.org/en/latest/topics/images.html – Talvalin

+0

Làm cách nào để bạn biết đường ống không được kích hoạt? Bạn có thể bao gồm một chút đầu ra bản ghi hay không, chẳng hạn như: '2013-04-16 16: 40: 31-0500 [scrapy] DEBUG: Đường ống mục được kích hoạt: ImagesPipeline'. –

Trả lời

10

Thứ nhất, settings.py: HÌNH ẢNH -> IMAGES_STORE

Thứ hai, spider: Bạn nên trả lại một item để ImagesPipeline có thể tải về những hình ảnh.

item = DmozItem() 
image_urls = hxs.select('//img/@src').extract() 
item['image_urls'] = ["http:" + x for x in image_urls] 
return item 
Các vấn đề liên quan