如何使用scrapy下载图像并上传到S3服务器
我想在爬虫关闭的时候把图片上传到S3存储。
我现在的方法是把所有的图片从MongoDB中发送:upload_s3(ShA.objects.all())
但我想改成只发送这次爬虫下载的图片。
我需要把变量sh.images
从函数process_item()传递到函数close_spider(),这样MongoDB就能过滤出这次爬虫抓取的项目。
我该怎么修改才能实现这个呢?
这是我的管道代码:
from mongo.models import ShA
from uploads3 import upload_s3
class ShPipeline(object):
def process_item(self, item, spider):
if isinstance(item, ShaItem):
sh = item.save(commit=False)
sh_exist = ShA.objects.filter(link=sh.link)
if sh_exist:
sh.id = sh_exist[0].id
sh.save()
#sh.images
return item
def close_spider(self, spider,item):
if spider.name == "email":
upload_s3(ShA.objects.all())
#upload_s3(ShA.objects.get(images=sh.images)) no use,need to get sh.images from def process_item