我们的刮刀目前不仅下载文字,还下载图片。处于当前状态的刮刀工作正常,但是我们对下载图像的质量存在很大问题。 检查标准ImagePipeline后,我们实现了一个自定义的,告诉Pillow使用最高质量,它看起来像这样(并在settings.py中配置):
from scrapy.contrib.pipeline.images import ImagesPipeline
from scrapy.exceptions import DropItem
from scrapy.http import Request
from cStringIO import StringIO
class CustomImagesPipeline(ImagesPipeline):
def convert_image(self, image, size=None):
buf = StringIO()
image.save(buf, 'JPEG', quality=100)
return image, buf
我们还尝试了从此文件中获取的其他几个预设: https://github.com/python-imaging/Pillow/blob/master/PIL/JpegPresets.py
然而,我们没有看到任何改进。有人在此处理过这个问题,或者知道代码有什么问题吗?
谢谢:)
答案 0 :(得分:3)
我用不同的方法解决了这个特殊的问题,这是通过最近的拉动请求来实现的,这个请求尚未被记录。
pull请求引入了一个名为FilesPipeline的新管道: https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/pipeline/files.py
我必须进行以下更改才能使其正常工作:
image_urls
字段重命名为file_urls
items.py
settings.py
中的管道并定义存储空间
ITEM_PIPELINES = {'scrapy.contrib.pipeline.files.FilesPipeline': 1}
FILES_STORE = '/Users/chris/Scrapy/project/images'
除了这些更改之外,管道的工作原理与图像管道完全相同。显然,只有当您只需要原始格式的网站文件时,此方法才有效。