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

原创 2016年08月28日 17:48:44

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


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、爬取层数、任务开关、爬取频率、重试次数、重试间隔时间

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


因为系统刚刚上线,肯定还有不少坑,但每填一个坑,我就会更开心一点,因为爬虫更强大了一点。



超简单的 Web 爬虫程序(转贴)

超简单的 Web 爬虫程序,不过可以在他基础之上改造一下,写出强大点的爬虫!         谢谢提供程序的 blog 友!         /**  * @author Jack.Wan...

从零开始打造一个新闻订阅APP之爬虫篇(二、实现一个简单的爬虫系统)

前景提要:如何开发一个新闻订阅APP之爬虫篇(一、背景介绍&需求分析) 做一个特定的爬虫系统,首先考虑它要做什么? 从互联网上抓取指定的N个站点信息,解析提取需要的内容,按照特定的结构存储; 系...

网络爬虫项目开发日志(六): 基于余弦向量法的Web数据并行爬取

--前言-- 随着项目的不断进展,爬虫项目所需要爬取的数据种类越来越多,爬取的体量也越来越大,而且更新频率也更快,单机爬取机制肯定是不适用了,日前,偶然从学术领域得知了基于余弦向量法的多机并发爬取策...

网络爬虫项目开发日志(二):爬虫架构设计

网络爬虫项目开发日志(二):爬虫架构设计 本系列的文章纯粹是闲暇中我用来记录开发过程中的点滴,用作以后消遣用的,大神们不喜勿喷...

网络爬虫项目开发日志(七): 基于MD5去重树的爬虫设计与优化

--注-- 本文仅做研究交流用,非工业化标准,各位大神不喜勿喷哈 --引言-- 爬虫系统在面对海量网页数据时,会因为DNS解析以及URL去重而消耗大量的时间,为了更好的改进爬虫的效率,让爬虫在大...

Python大型网络爬虫项目开发实战

1   讲师简介 2   课程简介及特色    实战精通Scrapy爬虫项目编写   "Scrapy是Python的一个非常流行的爬虫框架,使用Scrapy框架可以很方面做出大型爬虫项目...
  • CSDNedu
  • CSDNedu
  • 2016年10月21日 11:44
  • 2353

Linux企业级项目实践之网络爬虫(1)——项目概述及准备工作

我们在学习了Linux系统编程之后,需要一些实战项目来提高自己的水平,本系列我们通过编写一个爬虫程序,将我们学习的知识进行综合应用,同时在实现项目的过程中逐渐养成一些有用的思维方式,并具有初步的软件开...

一只简单的网络爬虫(基于linux C/C++)————读取命令行参数及日志宏设计

linux上面的程序刚开始启动的时候一般会从命令行获取某些参数,比如以守护进程运行啊什么的,典型的例子就是linux下的man,如下图所示 实现该功能可以使用getopt函数实现,该函数在头文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络爬虫项目开发日志(三):爬虫上线准备
举报原因:
原因补充:

(最多只允许输入30个字)