1.先声明一下,起始位置已经是将所有的图片链接都能到pipelines.py中
2.创建一个类,继承于ImagesPipeline,因此也就需要导入ImagesPipeline
from scrapy.pipelines.images import ImagesPipeline
3.由于继承自ImagesPipeline类,且该类下有一个get_media_requests方法需要被重写
def get_media_requests(self, item, info):
4.由于是通过链接来获取图片,就少不了scrapy.Request(图片链接)这个方法
import scrapy
5.向图片链接发请求后得到的响应会保存到settings.py中的IMAGES_STORE路径中,因此要去配置一下settings.py,
IMAGES_STORE = "/home/zengsf/spider/Douyu/Douyu/Images"
6.别忘了你创建的pipelines.py中的类需要在settings.py中的ITEM_PIPELINES中添加
ITEM_PIPELINES = { # 'Douyu.pipelines.DouyuPipeline': 300, 'Douyu.pipelines.DouyuImagePipline': 200, }
所有代码:
from scrapy.pipelines.images import ImagesPipeline import scrapy class DouyuPipeline(object): def process_item(self, item, spider): # 可以写存储数据库逻辑 return item class DouyuImagePipline(ImagesPipeline): # 此方法不能变 def get_media_requests(self, item, info): # 1 获取图片链接 imageLink = item["imgLink"] # 2 向图片链接发请求,响应会保存在settings.py中的IMAGES_STORE路径中 yield scrapy.Request(imageLink) return item