做数据挖掘的工作的第一步,当然是获取数据,这也是最为关键的一步。下面总结一些本人对python数据抓取程序的总结和思考,记录下来以备日后用到可复习。

1. 静态抓取以及动态抓取

静态抓取或者动态抓取都可分析参数传递过程以及加解密算法,等于自己重新构造了一遍网站的数据传输规则,简单的网站可如此分析,复杂的网站在对速度要求不高时可使用自动化工具,最常用的就是Selenium,加上一些驱动包,比如Firefox,Chrome,PlantomJS等,最新版的Selenium对PlantomJS已经不支持,可使用Firefox,Chrome等的无头浏览器版本。

参数传递的过程中,注意请求头给出相应的参数,数据是不是要编码,内容是不是压缩等;使用Selenium过程中,注意一些异常的区分。

2. Excel处理

数据读入和读出的都要用到操作EXCEL文件。一开始使用xlrd,xlwt ,xlutils对EXCEL进行处理,繁琐无比,后来发现了pandas,堪称python的数据挖掘神器,可以常见文件TXT,CSV,XLS等文件读成统一的数据框格式,极其方便,以后所有关于EXCEL操作,就用pandas吧。

3. 多线程和多进程

关于多线程和多进程的讨论网络上已经很多了,资料很多,对于数据抓取程序来说,多线程和多进程效率差不多,但多线程灵活性强,适应性强,多进程适应性较差,貌似还有个多协程,没看过,应该更好用吧。

4. 图形界面

图形界面开发包括Tkinter,wxPython,Qt等等,简单的封装Tkinter就够了,毕竟要用其他的还要去学习,增加了学习成本。Tkinter控件基本够用,对于简单的界面完全够用。

5. 打包成exe

python打包成exe文件,有很多种技术:pyinstaller,py2app,py2exe,cxfreeze等,这里推荐cx_Freeze,打包过程可以爽到飞起,最简单,但在过程中对第三方包导入的不完全性和需要自己修改其源代码的错误,但是相对来说,它是最好用的打包工具。

6.全量抓取与增量抓取

全量抓取对抓取的时间性要求不高,而增量抓取对时间要求较高,因此使用高可用性的代理必不可少。

7. 思考与总结数据抓取程序完全是根据需求,根据业务来做的,没有什么高大上的东西,重点是对数据集成以及清洗。

现在许多人都使用一些集成框架,但是一旦出错,问题不好跟踪;自己写抓取程序时,最主要的是对各种异常错误的处理。

python程序写多了真的不好,这种动态语言想到哪写哪,没有章法,会让你丧失编程能力。