大文件下载
图片、音频等二进制文件在parse()里无法解析,在爬虫文件中爬取数据再提交管道比较麻烦,可以在提交item后在管道类中使用scrapy封装好的下属管道类进行存储。
管道类
管道需要接收item中的图片名称和地址,然后在管道中请求到图片数据对其持久化存储。其中音频、视频、图片都属于二进制文件,可以通用ImagesPipeline
# 提供了数据下载功能
from scrapy.pipelines.images import ImagesPipeline
from scrapy.pipelines.media import MediaPipeline
from scrapy.pipelines.files import FilesPipeline
pipelines.py
自动创建的class ImgproPipeline
管道默认无法帮助请求图片数据,将其pass,创建新管道类并继承ImagesPipeline
改写方法
class ImgsPipLine(ImagesPipeline): #继承该类 改写方法
# 根据图片地址发起请求
def get_media_requests(self, item, info):
# 返回图片名称
def file_path(self, request, response=None, info=None, *, item=None):
# 将item传递给下一个即将被执行的管道类
def item_completed(self, results, item, info