文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
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字符串了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论