利用scrapy下载图片保存到本地

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

猜你喜欢

转载自www.cnblogs.com/zengsf/p/10049270.html
今日推荐