0

現在、スクレーパーはテキストだけでなく画像もダウンロードしています。現在の状態のスクレーパーは問題なく動作していますが、ダウンロードした画像の品質に大きな問題があります。標準の 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

しかし、改善は見られませんでした。ここで誰かが以前にこの問題に取り組んだことがありますか、またはコードの何が問題なのか考えていますか?

ありがとう :)

4

1 に答える 1

4

この特定の問題は、別のアプローチで修正しました。これは、まだ文書化されていない最近のプル リクエストによって可能になりました。

プル リクエストにより、FilesPipeline と呼ばれる新しいパイプラインが導入されました: https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/pipeline/files.py

これを機能させるには、次の変更を加える必要がありました。

  • image_urls画像パイプラインに使用されるフィールドの名前file_urlsitems.py
  • でパイプラインをアクティブ化しsettings.py、ストレージを定義します
    • ITEM_PIPELINES = {'scrapy.contrib.pipeline.files.FilesPipeline': 1}
    • FILES_STORE = '/Users/chris/Scrapy/project/images'

これらの変更を除けば、パイプラインはイメージ パイプラインとまったく同じように機能します。明らかに、このアプローチは、Web サイトから元の形式のファイルが必要な場合にのみ機能します。

于 2013-10-16T07:55:21.443 に答える