scrapy专利爬虫(四)——数据处理

来源:互联网 发布:康师傅波士顿矩阵分析 编辑:程序博客网 时间:2024/05/29 04:39

scrapy专利爬虫(四)——数据处理

说到scrapy的数据处理,就必须先介绍两个组件item和pipeline。

item

item的使用比较简单,只需要定义一个继承自scrapy.Item的类,在类中定义需要采集的元素即可,比如:

    # 专利名称    name = scrapy.Field()    # 类型(公告,授权公告)    type = scrapy.Field()    # 专利类型    patentType = scrapy.Field()    # 申请号    requestNumber = scrapy.Field()    # 申请日    requestDate = scrapy.Field()    # 公布日    publishDate = scrapy.Field()

在后续的使用中,可以直接使用item.get('name')取值,item['name'] = 数据赋值。

pipeline

pipeline作为数据查重,收集等功能的管道,基本的数据处理都将这里进行。

     process_item(self, item, spider)

函数中的item是在之前spider中的回调函数yield的item,进入了这个函数后我们可以进行查重、校验和数据存储。本工程对发明人和申请人进行了校验。

    def process_item(self, item, spider):        if self.checkForInventor(item):            if self.checkForProposer(item):                print(item.items())                self.writeToExcel(item)        return item

写入excel

由于项目对excel的需求不高,所以工程使用了xlrd,xlwd,xlutils等库,写入xls文件。

python读写excel是分别使用了两个库进行操作。写入用的是xlwd,读取用的是xlrd。而且没有提供直接修改的API,所以需要使用xlutils的copy先将excel文件读入写入实例的内存。

    def getExcel(self, mode):           # 采用工厂模式建立excel的读写实例        if isinstance(mode, str):            if mode.upper() == "READ":                return xlrd.open_workbook(self.__fileName)            elif mode.upper() == "WRITE":                rb = xlrd.open_workbook(self.__fileName)                return copy(rb)        else:            return None

写入时需要先指定sheet然后再进行写入操作。由于各种奇奇怪怪的限制,所以工程模仿安卓的SharedPreferences的使用方式,先获取editor然后每次写入需要commit。

详细实例在代码中。

源码下载

  • csdn
  • github
赞赏 微信支付 支付宝 微信 支付宝
原创粉丝点击