2014-06-25 72 views
1

所以我一直在嘗試通過創建一個非常基本的爬蟲學習Python。目前,我所有的拼圖工程如預期,除了圖像:問題與Scrapy和圖像抓取

我已經添加了一個圖像存儲到我的settings.py,我成功地通過蜘蛛提取圖像的URL,但它是目前沒有節省任何圖像。

用於提取圖像URL的路線如下:

snowboard['image_URL'] = ''.join(item.xpath('li[@class="productImage"]/a/img/@data-original').extract()) 

這將產生沿此線的東西:在我items.json

"image_URL": "/zoom/858553/230" 

到目前爲止,除了沒有圖像被保存到我的圖像商店,所有的看起來都很好。作爲參考,這是我的項目管道:

class SnowboardPipeline(object): 
    def process_item(self, item, spider): 
     return item 

    def get_media_requests(self, item, info): 
     for imageURL in item['image_URL']: 
     yield Request(imageURL) 

我很好奇,如果這件事情做與不具有異常的圖像,或者我看過了文檔中的東西昭然若揭,當談到拉低圖片。

+0

假設你已經在http://doc.scrapy.org/en/latest/topics/images.html啓用'ImagesPipeline',你的項目關鍵是告訴它下載圖片[應該是'image_urls'](http ://doc.scrapy.org/zh/latest/topics/images.html#using-the-images-pipeline)而不是'image_URL'。它也應該是一個列表,而不是一個唯一的字符串元素 –

回答

1

所以對於那些好奇的人來說,我的問題基本上是圖像管道需要完整的URL而不僅僅是擴展。事後看來,這是顯而易見的。

我們可以通過導入到裏urlparse刮刀,然後用響應URL加入我們的相對圖片URL,如下所示解決此問題:

snowboard['image_urls'] = [urlparse.urljoin(response.url, snowboard['URL'])] 

這將產生一個完整的URL的形象。然後,我遇到了jpeg解碼器丟失的問題,但是通過安裝相關依賴項並重新安裝PIL解決了這個問題。