Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

    • 爬虫的基础知识

    • 请求的发送方法

    • 数据提取方法

    • 高性能爬虫

    • selenium

    • 反爬以及解决方案

    • MONGODB数据库

    • scrapy框架

    • scrapy_redis

    • 爬虫的部署

    • 爬虫框架开发分析

    • 框架雏形实现

    • 框架功能完善

    • 框架功能升级

    • 项目实战

    • pywin32介绍

      • 百度翻译获取sign值
      • scrapy中ImagePipeline的使用
        • ImagesPipeline管道\(自动图片下载\)
          • 一、ImagesPipeline的工作流程
          • 二、ImagesPipeline的使用
      • sanic、quart类Flask的异步框架介绍
      • 了解其他网络请求模块
      • 通过Fiddler进行手机抓包
      • Fiddler抓取https的设置
      • 关于12306抢票
      • svn和git的使用
  • 前端教程

  • 教程
  • Python爬虫
  • pywin32介绍
wangmings
2022-07-19
目录

scrapy中ImagePipeline的使用

# ImagesPipeline管道(自动图片下载)

Scrapy提供了一个 item pipeline ,来下载属于某个特定项目的图片,比如,当你抓取产品时,也想把它们的图片下载到本地。本文接豆瓣top250电影,爬取海报图片。

# 一、ImagesPipeline的工作流程

首先在爬虫项目中获取图片的image_urls item[‘image_urls’]进入管道中 当项目进入 ImagesPipeline,image_urls 组内的URLs将被Scrapy的调度器和下载器(这意味着调度器和下载器的中间件可以复用)安排下载 下载完回返回一个results,这是一个二组,包括success(布尔值,提示图片是否下载成功)和image_info_or_error(图片下载的url,图片存储的路径,图片内容的 MD5 hash)

# 二、ImagesPipeline的使用

1.首先在item.py中写入

import scrapy

class MyItem(scrapy.Item):

    image_urls = scrapy.Field()  #保存图片地址
    images = scrapy.Field()      #保存图片的信息 
1
2
3
4
5
6

2.在setting.py中写入

ITEM_PIPELINES = { 'top250.pipelines.Top250Pipeline': 1,}
IMAGES_STORE = 'images'   #存储图片的文件夹位置 
1
2

3.在pipeline中写入

class Top250Pipeline(ImagesPipeline):

    def get_media_requests(self, item, info):
        for image_url in item['image_urls']:
            yield scrapy.Request(image_url)

    def item_completed(self, results, item, info):
        image_paths = [x['path'] for ok, x in results if ok]      # ok判断是否下载成功
        if not image_paths:
            raise DropItem("Item contains no images")
        #item['image_paths'] = image_paths
        return item 
1
2
3
4
5
6
7
8
9
10
11
12
编辑 (opens new window)
百度翻译获取sign值
sanic、quart类Flask的异步框架介绍

← 百度翻译获取sign值 sanic、quart类Flask的异步框架介绍→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式