美文网首页python开发我用Python每天写1000字
Python爬虫学习(十九)Item Pipeline

Python爬虫学习(十九)Item Pipeline

作者: 弃用中 | 来源:发表于2018-01-21 01:23 被阅读213次

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

    那么Item Pipeline又是什么鬼?

    Item Pipeline

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

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

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

    • 清理HTML数据
    • 验证爬取的数据(检查item包含某些字段)
    • 查重(并丢弃)
    • 将爬取结果保存到数据库中

    编写自己的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
    
    

    运行结果如下:


    目录中也有了图片:


    以上。


    相关文章

      网友评论

        本文标题:Python爬虫学习(十九)Item Pipeline

        本文链接:https://www.haomeiwen.com/subject/fwhxaxtx.html