返回介绍

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

发布于 2024-01-30 22:48:37 字数 1307 浏览 0 评论 0 收藏 0

假设我们有一个包含几个爬虫的应用,以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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文