一次偶然的机会得知#知道创宇#的网站上存在着这样一道Python的题目→http://blog.knownsec.com/2012/02/knownsec-recruitment/←在各种激励下开始有了完成该题目的欲望。
由于当年的毕业设计是用C#写的爬虫,对爬虫有一定的了解。当初需求是抓取Sina博客进行判断并归类,加入一点智能算法进去勉强算是实现了类似电商那种“猜您可能喜欢”的功能。言归正传,这道Python题目一开始担心没有时间与精力去完成它,因为平时工作都用不到敲代码,只能挤出个人学习时间来弄,再加上三不五时地加班就更没时间了,陆陆续续弄了快两个星期了吧,说来实在惭愧。。。实现的是最基本的功能,整体的性能并未能好好考虑,这一块还有较大的提升空间【泪奔】~~~
来几幅截图~~



由于代码写得太烂,拿不出手,就简单写下伪代码吧。。。

def 爬虫()
        输出进度信息
        访问URL
        对URL响应的Response进行正则匹配得到下一层的URL
        判断URL合法性,包括去重,保存到List
        对URL响应的Response源码进行key匹配,匹配中则保存到数据库
        
        对Except到的异常写进日志Logger
        返回List

class 线程池()
        待完成队列
        完成结果队列
        线程数
        
        def 处理待完成队列中任务
                分配任务到线程中

        def 添加任务
                添加任务到队列中

class 线程()
        获取需要处理的URL和参数
        调用“爬虫”方法

class 数据库()
        数据库路径
        建立连接
        def 执行sql()
                self.c.execute()
        def 保存()
                self.conn.summit()

class 日志()
        日志对象
        日志路径及等级
        def info()
                写日志

def main()
        获取各个参数

        for i in 深度:
                total=该层URL总数
                初始化线程池
                for j in 该层URL
                        线程池.添加任务(各参数)
                线程池处理任务列队
                该层URL总数=线程结果队列
        数据库.summit()