站点首页 新闻资讯 研究文档 优秀模板 免费资源 演示站点 站长充电 交流论坛  
当前位置:首页研究文档>正文
从Larbin看互联网爬虫设计
作者:于敦德,日期:2006-4-28 23:02:18,来源:不详

互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景,尤其是类似RSS的以XML为基础的结构化的数据越来越多,内容的组织方式越来越灵活,检索组织并呈现会有着越来越广泛的应用范围,同时在时效性和可读性上也会有越来越高的要求。这一切的基础是爬虫,信息的来源入口。一个高效,灵活可扩展的爬虫对以上应用都有着无可替代的重要意义。

要设计一个爬虫,首先需要考虑的效率。对于网络而言,基于TCP/IP的通信编程有几种方法。

第一种是单线程阻塞,这是最简单也最容易实现的一种,一个例子:在Shell中通过curl,pcregrep等一系统命令可以直接实现一个简单的爬虫,但同时它的效率问题也显而易见:由于是阻塞方式读取,dns解析,建立连接,写入请求,读取结果这些步骤上都会产生时间的延迟,从而无法有效的利用服务器的全部资源。

第二种是多线程阻塞。建立多个阻塞的线程,分别请求不同的url。相对于第一种方法,它可以更有效的利用机器的资源,特别是网络资源,因为无数线程在同时工作,所以网络会比较充分的利用,但同时对机器CPU资源的消耗也是比较大,在用户级多线程间的频繁切换对于性能的影响已经值得我们考虑。

第三种是单线程非阻塞。这是目前使用的比较多的一种做法,无论在client还是server都有着广泛的应用。在一个线程内打开多个非阻塞的连接,通过poll/epoll/select对连接状态进行判断,在第一时间响应请求,不但充分利用了网络资源,同时也将本机CPU资源的消耗降至最低。这种方法需要对dns请求,连接,读写操作都采用异步非阻塞操作,其中第一种比较复杂,可以采用adns作为解决方案,后面三个操作相对简单可以直接在程序内实现。

1页,共2页  9 7 [1]  [2]  8 :

最新动态
 一个typoscript精简教程
 Drupal 的术语(翻译稿)
 Typo3扩展(插件)的安装
 Typo3静态页面(html)(模拟
 Typo3的几种安装包及选择
 什么是内容管理系统?
 HBCMS企业网站管理系统
 2006年各种主流CMS系统的
 [jfcms] 新闻页面中如何实
 渐飞智能标签 3.1详细说明
热点推荐
 一个typoscript精简教程
 Drupal 的术语(翻译稿)
 Typo3静态页面(html)(模拟
 什么是内容管理系统?
 HBCMS企业网站管理系统
 2006年各种主流CMS系统的
 渐飞智能标签 3.1详细说明
 渐飞智能标签 3.1详细说明