我们学习了从网页中爬取信息的方法,这只是爬虫最典型的一种应用,除此之外,下载文件也是实际应用中很常见的一种需求,例如使用爬虫爬取网站中的图片、视频、WORD文档、PDF文件、压缩包等。
1、FilesPipeline 和 ImagesPipeline
Scrapy 框架内部提供了两个 Item Pipeline,专门用于下载文件和图片:
(1)FilesPipeline
(2)ImagesPipeline
我们将这两个 Item Pipeline 看做特殊的下载器,用户使用时只需要通过一个特殊字段将要下载文件或图片的 url 传递给它们,它们会自动将文件或图片下载到本地,并将下载结果信息存入 item 的另一个特殊字段,以便用户下载导出文件中查阅。
图片也是文件,所以下载图片本质也是下载文件,ImagesPipeline 是 FilesPipeline 的子类,使用上和 FilesPieline 大同小异,只是在使用的 item 字段个配置上略有差别
FilesPipeline | ImagesPipeline | |
导入路径 | scrapy.pipeline.files.FilesPipeline | scrapy.pipeline.files.ImagesPipeline |
Item 字段 | file_urls, files | image_urls, images |
下载目录 | FILES_STORE | IMAGE_STORE |
<html> <body> <a href = '/book/sg.pdf'>下载《三国演义》</a> <a href = '/book/shz.pdf'>下载《水浒传》</a> <a href = '/book/hlm.pdf'>下载《红楼梦》</a> <a href = '/book/xyj.pdf'>下载《西游记》</a> </body> </html>