您的位置:首页 > 理论基础 > 计算机网络

网络爬虫项目开发日志(三):爬虫上线准备

2016-08-28 17:48 253 查看
经过这段时间的开发,尽管路途不顺畅,但我们还是顺利的上线了爬虫项目的初版,上线的过程也是一波三折,特总结如下:

1、技术选型千万要慎重,尤其是在第三方框架的跨平台支持性上需要做好充分的评估,开发人员当初只是在windows平台做的开发,没有在linux平台

上验证同样一个技术的可用性,导致到了上线前忍痛割爱,换备选技术方案。

      例如:我们在开发阶段,开发哥哥选用谷歌的chrome webdriver来处理被下载网页的渲染,当初在windows平台上运作很正常,可到了上集成环境

的时候,发现chrome webdirver的linux安装包无法安装,因为该工具包所依赖的底层glibc、glibc++和我们服务器的cent OS 6.X所提供的相关lib版本

不一致,导致必须升级glibc、glibc++,升级glibc可不是一件轻松的事情,需要升级gcc,有着一系列的复杂shell操作,最后,经过评估,我们决定换

firefox webdriver取而代之,firefox的好处在于无需要另外安装webdriver驱动包,只需要安装火狐浏览器即可,OK,我们安装好浏览器后,系统跑起

来又报错了:NO Display Specified×××,啥意思,就是centOS未安装桌面组建,没有一个对屏幕显示的支持机制,如果要打开firefox浏览器,必须要

安装一个虚拟屏幕的程序来支持,这时候,xvfb站出来了,安装好xvfb,分配一个虚拟的屏幕号,启动firefox,搞定!

2、对于相对成熟的技术,也需要上linux平台上去根据实际线上部署请款模拟一遍真实的服务器之间的数据交互,而不是停留在想当然。

    例如:我们的消息层是基于redis来开发的,当时开发的时候,消息的订阅和发布其实都是在本机进行的,整个的消息传输处理的流程都能够测试通

过,但是,到了生产环境后,消息的发布和订阅是由两台服务器分别来进行,当其中一台服务器订阅了另外一台服务器的消息主题后,发现connect

refused,我们检查了网络权限,发现Ip、port在tcp层面的传输都没有问题,那是咋回事呢,后经查实,这是redis的安全事物处理机制,如果一台服务

器需要访问另外一台服务器的redis服务的时候,必须要通过密码校验来鉴权,后来设置服务器密码后,搞定!

3、充分评价系统的复杂度,尽早考虑将系统相关静态信息配置化,否则当系统需要平滑迁移时,书手术脚。

   例如:我们在临上线前一周,领导要求,所有和外网的交互都要经过一个网关系统,大的架构上没有问题,但对我们爬虫系统来说,无异于伤筋动骨

了,1、我们所有的httpclient中的外网种子Url都是写死在代码中的,如果要过网关系统,意味着必须把所有的种子Url都切换为网管Url,而且还要修改

相关的参数。2、我们页面解析中的也有很多针对域名的的操作,有写死在代码中的,有通过正则表达式来说明的等等,这些改动点如果细细想来,也

够我们吃一壶的。3、一个爬虫任务本身三有着各种属性来定义此任务模型的,有种子Url、爬取层数、任务开关、爬取频率、重试次数、重试间隔时间

、等等,如果外部业务有变动的话,在无配置的情况下,爬虫无法很灵活的跟着变动。

因为系统刚刚上线,肯定还有不少坑,但每填一个坑,我就会更开心一点,因为爬虫更强大了一点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: