当前位置:嗨网首页>书籍在线阅读

06-示例1_非常简单的管道

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

8.3 示例1:非常简单的管道

假设我们有一个包含几个爬虫的应用,以Python常见格式提供爬取日期。数据库需要将其转为字符串格式,以便进行索引。我们不想编辑爬虫,因为爬虫的数量比较多。此时可以怎么做呢?使用一个非常简单的管道对Item进行后置处理,执行需要的转换即可。让我们看看它是如何工作的。

from datetime import datetime
class TidyUp(object):
  def process_item(self, item, spider):
    item['date'] = map(datetime.isoformat, item['date'])
    return item

如你所见,这里只有一个包含 process_item() 方法的简单类。这是我们为了这个简单管道所需要做的所有事情。我们可以复用第3章中的爬虫,将前面的代码写入 pipelines 目录的 tidyup.py 文件中。

可以将这个Item管道的代码放到任何地方,不过为其创建一个单独的目录是一个好主意。

现在,需要编辑项目的 settings.py 文件,将 ITEM_PIPELINES 设置为

ITEM_PIPELINES = {'properties.pipelines.tidyup.TidyUp': 100 }

前面代码字典中的数字100,用于定义管道连接的顺序。如果另一个管道有更小的数值,它将在该管道之前优先处理 Item

本示例的完整代码位于 `ch08/properties` 目录中。

现在,可以运行该爬虫了。

$ scrapy crawl easy -s CLOSESPIDER_ITEMCOUNT=90
...
INFO: Enabled item pipelines: TidyUp
...
DEBUG: Scraped from <200 ...property_000060.html>
...
  'date': ['2015-11-08T14:47:04.148968'],

和我们期望的一样,日期现在被格式化为ISO字符串了。