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
阅读全文
0 0
- scrapy专利爬虫(四)——数据处理
- scrapy专利爬虫(一)——scrapy简单介绍
- scrapy专利爬虫(二)——请求相关
- scrapy专利爬虫(三)——简单实际操作
- Scrapy爬虫入门教程四 Spider(爬虫)
- Scrapy定向爬虫教程(四)——数据存入MongoDB
- 爬虫实践(四)--scrapy简单实践
- 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml
- Scrapy爬虫(三)——简易动态网页爬虫
- 网络爬虫系列笔记(4)——Scrapy爬虫
- Scrapy爬虫(一)——你的第一个Scrapy爬虫
- Python 爬虫 —— scrapy
- 爬虫——Scrapy框架
- Scrapy爬虫(四):imdb.cn爬虫实例
- 专利闲话(四)
- 用 Scrapy+Mariadb 实现汉典数据爬虫(二)——Scrapy简单介绍
- scrapy爬虫注意点(1)—— scrapy.FormRequest中formdata参数
- 跟我学系列,走进Scrapy爬虫(四)Scrapy命令行工具
- 关于同步和异步
- Android Kotlin学习之路(一) —— 配置Kotlin
- Android studio 修改程序包名
- Android Studio2.3和Gradle-3.3的升级和配置问题
- iOS 调用系统原生拨打电话
- scrapy专利爬虫(四)——数据处理
- Android 与H5交互
- 图像基本处理方法
- 《一个很简单的温度转换程序》
- C#学习之--类型与引用
- 关于STM32F105的SPI3配置
- java 内存学习笔记 一(内存划分与功能说明)
- Java调用WebService接口实现发送手机短信验证码功能
- IRQ和FIQ中断的区别