开篇不打算写太多技术细节,只想来阐述一下计划写该系列博客的初衷。
首先按照惯例,先做个自我介绍。博主本人一直是从事C++相关方面的研发,自认为技术很是一般(不只是谦虚),现在也同时兼顾在做一些大数据与云计算方面的工作,对机器学习和自然语言处理也有部分涉猎,总之是涉猎很广,但精通的却很少。
公司有一项业务是做政策收集及发布的,说白了就是人工查看哪些政府网站有新的政策发布了,就复制粘贴,修改下格式发布到我们的网站上,这算是一个政策信息的聚合平台吧。但是这种方式确实是费时费力,搞得这方面的人手一直紧张。后来leader一看一直招人也不是个办法,就想着能不能做个爬虫来自动抓取和发布信息,后来听说我会些python,就把这项光荣而艰巨的任务交个了我。其实博主也只是在实习期间学习过一段时间的python,这么长时间不用早就忘了,更别说之前对爬虫只是听说,没有任何的概念。没办法困难来了,硬着头皮也要上啊。
经过一个多月的加班奋战,终于在2015年年底完成了爬虫的第一个版本。该版本是基于大名鼎鼎的Scrapy框架开发的,由于python自身的队列不支持分布式,采用了Redis来作为url排重和队列,以实现爬虫的分布式抓取;存储采用的是mongodb数据库;动态网页采用的是Selenium模拟浏览器加载。其中实现了政策信息标题、时间、内容的自动抽取,地域、行业的自动划分等功能。
转眼到了2016年的年底,一年时间就这样过去了,这一年间该爬虫运行还算稳定,公司leader对这套系统也算满意,并表示希望能通过爬虫覆盖全国的网站,每当这时我都感觉羞愧难当,因为我深知这套系统还远远达不到令我满意的效果,随着对爬虫技术的不断了解,这种感觉越来越明显,但是苦于忙于其他事情,一直抽不出时间来改,很是着急。
正好年底做计划时leader把爬虫的改版任务列入了明年的计划中,博主也想借这个机会再系统的了解下爬虫,并写个系列的博客,一方面是通过总结加深理解,另一方面也希望我的文章能对一些人有所帮助。粗略规划了下下一步要改进的方面:
增加可视化调度系统
目前版本的爬虫系统的启动、停止、重启只能通过登录每台虚拟机通过命令行的方式进行操作,费时费力。采用图形化的调度处理,点点按钮就可以启动、停止爬虫线程,方便快捷,而且可以实时监控爬虫的运行状态。
初步规划使用可视化调度架构Dagobah实现。改变爬虫部署环境
目前爬虫部署方式是,在服务器下用VMWare建立多个Linux虚拟机,分别用来部署爬虫。这种方式的缺
