新浪微博爬取笔记(4):数据清理

本文总结了在爬取微博数据过程中进行数据清理的经验,包括使用数据库存储数据以提高效率,处理异常语句,将清理脚本封装为函数,以及详细介绍了如何处理时间信息,如计算latency,并利用pickle存储处理后的数据结构。文章通过实例展示了如何用Python的datetime和time模块处理时间格式,并处理相关异常情况。
摘要由CSDN通过智能技术生成

数据清理的部分很多,其实爬数据的过程中步骤的间隔也要做数据清理,都是很琐碎繁杂的工作。总结经验的话,就是:

1、一定要用数据库存储数据  

(我因为还不太会数据库,为了“节省学习时间”,所有数据项都用txt存储,直到最后出现了多个种类之间查找,文件夹树变得比较复杂,才觉得当初即使使用MySQL也会提高效率)

2、处理异常的语句不嫌多

3、处理数据的脚本最好打包成函数,尽量减少运行前需要改源码的机会,变量从外部传递

4、工作流程要整体写出来画成图方便查找,步骤和文件多了会有点混乱


以处理时间为例:

我这次需要得到用户的latency, 也就是从微博发出到该用户转发的时间间隔。

一条微博的信息line在txt中是这样的:

M_CdHsYyHZd 转发[313] 04月17日 16:27 来自微博 weibo.com 

一条转发:

/yunxiang  2014-09-28 12:46:07 来自火星Android /n/%E5%8D%9A%E7%89%A9%E6%9D%82%E5%BF%97 

用python处理这样一条line, 基本需要的函数就是 .split() 以及各种列表操作;

 

以处理时间部分为例。python中用来处理时间的模块主要是datetime和time, datetime比较好用, time用来得到文件信息,比如创建、修改时间之类。

时间部分有不同的格式,比如:

今天 15:00

2014-12-04 20:49:48

31分钟前

04月17日 22:00

这样就要写不同的匹配方案:

 1      if len(re.compile('\d+-\d+-\d+').findall(time_area[0])) == 1: #2014-12-04 20:49:48
 2             [year, month, day] = [i for i in re.compile(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值