piplinescrapy系列处理数据的地方,在pipline里面,可以把采集到的数据持久化。而scrapy就是item就是数据的标准格式,有点像以前c#时代的model,定义数据属性的地方。那么,通常意义上的,抓取到的数据要经过item格式化,然后到pipline里面持久化。

在本文中,苏南大叔就简要的描述一下,在scrapy中,如何理解piplineitem,以及如何根据处理数据的基本流程。

苏南大叔:scrapy爬虫系列:数据结构体item及数据处理逻辑pipline - item_pipline
scrapy爬虫系列:数据结构体item及数据处理逻辑pipline(图3-1)

定义item

scrapy的项目结构上看,所有的爬虫都是共用一个items.py定义文件的。items.pyspiders/*的对应关系是一对多的关系。所以,个人认为,这可能会有些逻辑上的混乱。或者大家不同功用的爬虫就不要放到一个项目里面吧。

item的定义非常容易,一个数据结构就是一个class,字段不分具体的类型(比如数字型/字符串型),都是一个定义方式scrapy.Field()

下面是个典型的文章类型的定义代码。

import scrapy
class ArticleItem(scrapy.Item):
    title = scrapy.Field()
    content = scrapy.Field()
    href = scrapy.Field()
    pass

使用的时候,流程是这样的:
一般是在spiders/*里面,抓取数据生成item,然后yield <item>pipline之中进行处理。

苏南大叔:scrapy爬虫系列:数据结构体item及数据处理逻辑pipline - item_define
scrapy爬虫系列:数据结构体item及数据处理逻辑pipline(图3-2)

相关链接

如果您的好奇心比较严重,可以点击下面这条链接,查看更多的官方说明。

总结

具体如何处理item,途径有很多,比如:发送到kafka,发送到redis,或者存储到mysql,这些都是比较常见的使用场景。

在本文中,并不涉及具体的持久化代码。如何持久化数据,就是使用不同的python代码,套用填充__init__()process_item()的过程,你懂的。

如果想知道更多的数据处理方式,请关注苏南大叔的后续文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   python    scrapy

本站的忠实读者小伙伴,正在阅读下面这些文章: