要写个爬虫爬些数据,以前没写过爬虫,网上查下Python挺方便的,花了一晚上把Python入了个门就开始写了,写篇博客记录下这个过程。
1. 功能需求看下图:
2. 设计说明
本系统的编程语言为Python,Python通过MySQLdb来连接数据库并进行各项操作,通过spynner库来解决动态加载的页面,spynner依赖pyqt,pyqt依赖sip。
数据库的E-R图设计如下(偷个懒,,不用Visio了。。):
爬虫主要是通过Python的urllib2,re模块实现。
其中urllib2主要用于用于网页的获取,re主要是通过正则表达式进行网页信息的处理。
Mysql数据库主要是通过Navicat来显示,并实现增删改。
因为这个网站链接命名其实连接挺有规律的,所以采用DFS进行遍历,用户只需输入会议名称,爬虫自动爬取相应会议的论文的相关数据。
后期数据可视化处理采用matlab了,因为相对比较熟。。。
3. 软件源代码
还是不给了。。
4.源代码分析报告
用urllib2获取网页,然后结合网页的具体内容通过相应的正则表达式进行信息的筛选,如果碰到动态加载的页面,通过spynner进行处理,然后把相应的数据存入Mysql数据库即可。
5.测试报告
经过对一定量的信息与原网页的信息进行对比,抓取信息的准确度还不错。在Navicat中也可以正常的对数据库进行增删改操作。
6.用户手册
运行程序即可抓取相应网页的信息即可。对数据库的具体管理可通过Navicat进行。
7.
存在问题:
我的这个系统数据库的设计不太合理,存在数据库冗余,进行某些增删改的时候可能会出现数据不同步的情况。
爬虫部分因为没使用相应的爬虫框架,所以不太稳定,有时会失败,而且在进行大量数据的爬取时,耗时较长。
8.遇到问题:
有些页面是通过JS动态加载出来的,查到一个库可以解决,然而这个库在Windows下装各种依赖库简直是灾难(Spynner->Pyqt->Sip),后来转移到Linux下还是捣鼓了半天才解决。
还有有个别正则表达式也挺麻烦的。