设为首页 收藏本站
查看: 702|回复: 0

[经验分享] 企业级网络爬虫应用(1) 开篇

[复制链接]

尚未签到

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

  •   增加可视化调度系统
      目前版本的爬虫系统的启动、停止、重启只能通过登录每台虚拟机通过命令行的方式进行操作,费时费力。采用图形化的调度处理,点点按钮就可以启动、停止爬虫线程,方便快捷,而且可以实时监控爬虫的运行状态。
      初步规划使用可视化调度架构Dagobah实现。
  •   改变爬虫部署环境
      目前爬虫部署方式是,在服务器下用VMWare建立多个Linux虚拟机,分别用来部署爬虫。这种方式的缺点是对资源消耗较多,且难以维护。
      规划使用Docker作为爬虫的部署容器。
  •   动态页面处理
      目前爬虫系统内部处理动态页面都是采用PhantomJS来模拟浏览器,但整体效率感觉还是达不到要求。Scrapy官方推荐的处理动态页面的方式为scrapyjs,规划改用这种方式。
  •   系统故障预警
      像爬虫系统这样要求实时性较高的系统,故障预警显得尤为重要,能够避免因程序、网络或数据库故障导致数据抓取保存失败,而相关人员却不知道而造成的损失。
      规划在程序中加入相关监控机制,出现故障及时邮件通知相关人员。
  •   数据存储方式
      目前版本系统的数据是存储在mongodb中,初期这种存储方式效率会很高。但随着数据量的不断增加,查询写入速度会变的越来越慢。
      规划下个版本改用HBase作为抓取数据的存储方式。
  •   增加消息队列
      目前版本系统数据都是直接操作数据库进行数据的存取的,但是这种方式随着爬虫线程的增加,对数据库会造成很大的压力。
      下个版本规划使用kafka做消息队列,所有数据都通过kafka再实例化到数据库。
  •   数据可视化
      开发数据可视化系统,以图形图像方式展现数据。可使用的框架有D3.js、Echarts等。
  •   页面配置优化
      目前我们的抓取规则都是通过人工配置XPath的方式,从浏览器复制xpath再粘贴到配置页面,还是有些麻烦的,下个版本计划做一个类似八爪鱼那样的配置客户端,通过集成模拟浏览器,来实现区域的选中,省去了复制粘贴的繁琐。
  以上就是规划的下个版本要优化的功能,可以看出真正的抓取功能只是占整个系统的很少的一部分,大部分还是集中在系统的完整性和数据的展现方面。稍后几篇博客可能就会介绍整体架构设计和其中的一些细节的功能,希望我能坚持写完直到整个系统上线。
  同时恳请看到博客的大佬们,如果其中有什么观点存在错误或歧义的,请留言指出,博主一定尽快修正,以免误人子弟,先在此谢过。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-387265-1-1.html 上篇帖子: PXE+kickstart自动安装ubuntu14.04 下篇帖子: 体验devstack安装openstack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表