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