python开发我用Python每天写1000字

Python爬虫学习(十九)Item Pipeline

2018-01-21  本文已影响213人  弃用中

在学习Item Pipeline之前,或许我们应该先去了解一下Items,如果怕麻烦的话,就暂且把它理解成字典这个数据类型吧。

那么Item Pipeline又是什么鬼?

Item Pipeline

官方文档解释是:
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。

每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

以下是item pipeline的一些典型应用:

编写自己的item pipeline

编写你自己的item pipeline很简单,每个item pipiline组件是一个独立的Python类,同时必须实现以下方法:

文档也给出了几个极好的例子:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/item-pipeline.html

启用item pipeline

实例

说了这么多,是时候动手体验一把了,那么干什么呢?
要不就看看女神呗:https://movie.douban.com/celebrity/1016930/photos/

我们的目的是下载这些图片,之前我们已经尝试写过了类似的项目,不过这次我们不妨用:http://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/images.html,可以省不少事呢!

首先自然是创建一个项目,然后就是定义好item,如下图:


开启图片管道:


设置一个文件夹来存储图片:


我们用命令创建一个spider:
scrapy genspider mm "movie.douban.com/celebrity/1016930/photos"

写入如下代码:

# -*- coding: utf-8 -*-
import scrapy
from satomi.items import SatomiItem


class MmSpider(scrapy.Spider):
    name = 'mm'
    allowed_domains = ['movie.douban.com/celebrity/1016930/photos']
    start_urls = ['https://movie.douban.com/celebrity/1016930/photos/?start={number}'.format(number=str(i*30)) for i in range(11)]

    def parse(self, response):
        item = SatomiItem()
        item['image_urls'] = response.xpath('//div[@class="cover"]/a/img/@src').extract()
        yield item

运行结果如下:


目录中也有了图片:


以上。


上一篇下一篇

猜你喜欢

热点阅读