`
农村哥们
  • 浏览: 287157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spider技术:设计Spider时要解决的几个问题

阅读更多
作者:渡渡鸟工作室http://hi.baidu.com/dudubirdstudio(版权所有,转载须注明出处)

spider是整个搜索引擎系统中很重要的一个组成部分,可以说是搜索引擎的基础。它不仅仅是为搜索引擎提供了搜索对象——海量数据,更重要的是它使搜索引擎从一个检索工具上升为一个信息整合的平台。
搜索引擎的本质就是信息的整合,通过信息的整合构建了一个用户平台。这样就使得搜索引擎成为一个很好的且很有利润的商业化对象。

好的搜索引擎必须配一个好的spider,好的spider需要设计人员优雅的去设计。

设计时spider重点要解决以下几个问题:

1. 抓取的效率
            抓取的效率和计算机硬件的性能、硬件的多少、网络的带宽有关系,但为了提高抓取效率不能一味地增加硬件,而是要利用有限的硬件资源在一定的时间内抓取最多的的网页。
            常见的提高抓取效率的策略有:
            (1)采用多线程并发抓取
            (2)采用单线程、非阻塞I/O抓取
            (3)分布式抓取,把抓取工作分布到多台服务器完成,对于Google这样的搜索引擎还包括地理上的分布式,把抓取服务器机群分布到全球各个国家的主干网上抓取。
            (4) 抓取的效率很大程度也取决于抓取的对象——网站服务器和带宽的速度。因此设计spider时要有估算抓取网站服务器负载和带宽的功能并且有一个很好调度策略,使得访问不同状况网站服务器有不同的频率。

2. 抓取的质量
            设计spider的目标不是把互联网上的所有网页都抓回来,而是抓重要的而且是最新的网页的即可。
            怎样抓取高质量的网页?哪些网页是质量比较高的?这里就要求设计人员对互联网以及用户的习惯和常理都有一定的理解。
            从互联网整体上看,网站中各个网页之间的链接关系是一个很重要的资源,因此在抓取网页时要记录网页之间的链接关系,以便进行链接分析,从而通过链接关系来评价网页的质量。
            网页重要性的评价指标可以从以下几个方面着手:
            (1)某个网页的链接深度。
            (2)网页的入度。
            (3)网页的父网页的入度。
            (4)网页的重复数。
            以上这些指标都基于这么几个常理:
            (1)网站最重要的网页都放在前面,即层次越浅。网站首页以及首页指向的网页都是比较重要的。
            (2)有很多网页、很重要的网页都指向这个网页,这个网页就比较重要,就像检索工具《SCI》评价论文的质量一样,被引用的论文的次数越多,则说明这篇论文比较重要。
            (3)第二点讲的是引用,还有一个就是转载,网页转载的次数越多,则说明这个网页比较重要,就像报纸或杂志文章一样,好的文章都被其他媒体大量转载。
            具体实现时除了第一个指标外,其他三个指标只有在预处理阶段的统计才能得出。
            所以在抓取时应首先获得尽量多的网站首页,然后从该网站首页出发采用先宽的抓取策略。

3. 抓取的礼貌问题
             礼貌的抓取具体表现在:网站不让抓取的网页就不要抓取,控制好访问网站的频率,spider的抓取行为不能影响正常用户的访问。因此spider在抓取时要:
            (1)限制单位时间内对一个网站抓取网页的数量。
            (2)限制同时对同一个网站抓取的线程/进程的数量。
            (3)控制对同一个网站抓取的时间间隔。
            (4)遵循robots、META Tag 、sitemap.htm协议 ,对不允许访问的目录不访问。
            (5)在抓取网页的时发送的请求中,通过User-agent、Form字段,标识spider的身份、联系Email、spdier注意事项页面URL。

4. 避免重复抓取
            之所以会造成重复抓取,是因为:
            (1)互联网上大量网页被其他网页引用,这就使得同一个网页的URL出现在多个不同的网页中,这就要求spider必须有URL消重功能。
            (2)网页被其他网页转载,这就使得同一篇文章出现在不同URL的页面中,这就要求spider具有内容消重功能,目前这块比较难以实现,当前很多搜索引擎公司都没有较好的解决这个问题。
           (3)网页的URL有多种表示形式,这是由于DNS与IP对应关系造成的。
            一个URL对应一个网页,但由于URL可以采用以下两种表示方式:
            [协议://]域名[:端口][/路径/文件名]
            [协议://]点分十进制IP地址[:端口][/路径/文件名]
            且域名与IP存在以下对应关系:
            -- 一对一,http://www.baidu.com 与http://220.231.39.97指向的是同一网页。
            -- 一对多,DNS轮转,http://www.163.com 与http://202.108.42.73,http://202.108.42.91指向的是同一网页。
            -- 多对一,虚拟主机,多个域名对应同一个ip,不同的URL指向不同的网页。
                             一个网站具有多个域名,对应同一个IP,例如:www.netease.com,www.163.com指向同一个网页。
            - - 多个域名对应多个ip ,一个网站有多个域名,同时采用了DNS轮转技术,一个域名对应多个ip地址。
                       
5. 抓取数据的更新
             抓取数据的更新问题是一个很重要的问题,它决定了用户能不能马上搜索到最新的新闻,最新的内容,但是由于互联网上海量的网页使得一次抓取的周期都很长 ,如果通过每次重新抓取一次来更新,势必更新周期很长。
             spider已经抓取的网页可能被修改、删除,spider要定期检测这些网页的更新情况,同时更新原始网页库、提取的数据库以及索引库。
             互联网上同时不断的产生新的网页,spider也要抓取回来。
             不同的网站的更新周期不一样,有的很长,有点很短。
            spider要根据网站的更新周期,对网站进行分类,不同更新周期的网站抓取的周期不一样。
            一般来说,网络蜘蛛在更新原始网页库等的时候,不用把URL对应的网页重新抓取一遍,对于大部分的网页,只需要HTTP Head请求、条件Get请求来更新。

6.内容提取
            spider要抓取的文件各种各样,比如有HTML、XML网页,有doc、ppt、xls、pdf等带格式的文档,有图片、音频、视频等多媒体数据,对这些不同类型文件spider都要提取出文件里的纯文本内容。
            对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。
            对于HTML、XML网页来说,除了标题和正文以外,会有许多版权信息、广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。
            对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
            对于网页内容的提取一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理服务程序之中。

7. 硬件投入、抓取速度、一次抓取时间、抓取数据量等估算
             孙子曰:凡是预则立,不预则废。强调计划的重要性。很多事情也要做到心中有数。
             设计一个spider一定要考虑抓取10亿网页需要多长时间,需要多少硬盘来存,需要多少服务器来抓等。这些都可以通过估算得到一个最好/最大值的。
              例如:抓取时应该使用多少台机器以及一台机器启动多少抓取进程/线程呢?
              这里要考虑硬件资源情况:
               -- 局域网带宽 //发送速率
               -- 互联网接入带宽
               -- 局域网时间延迟 //1 ~ 10 ms
               -- 互联网时间延迟 //100 ~ 500 ms
               -- 服务器端接收请求、响应时间
               -- CPU利用率
               -- 内存大小以及利用率
               -- 硬盘大小以及读写速度
               -- 系统负载情况

以上提到了设计spider时要着重考虑的几个问题,这只是从大的方面概略地介绍了以一下,技术其实还是一门精工细作的工作,需要技术人员不断地去打磨。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chengg0769/archive/2007/08/13/1741710.aspx
分享到:
评论

相关推荐

    网络爬虫Spider

     ⑤ 爬虫的设计中应该注意的问题  第一个问题是URL地址的标准化:在WWW上,一个URL地址可以有多种表示方法,可以用IP 地址表示,也可以用域名来表示。为了避免爬虫重复访问同一地址。第二个问题是避免掉进网络陷阱...

    Gif_Spider:GIF图片的蜘蛛

    这个网站呢,是一个论坛式网站,里面分了几大类,反正试试各种动图。 我们的目标呢,就是找到这(收)些(藏)动(到)图(自)的(己)地(电)址(脑). 2.看一下各个模块的网址,看一下有什么规律 ' '', #美女GIF...

    Spider:Spider是一个PHP库,具有易于模块集成的爬网网站,可让您抓取信息

    使用搜寻器可能有几个好处: 信息搜索与检索验证您网站的SEO 整合测试以自动化方式在多个页面上执行PHP代码产品特点从网站获取所有链接检查HTTP响应创建自己的(抓取并执行PHP代码) 没有数据库,

    百度文库爬虫 Baidu Wenku Spider 百度文库下载器.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    spider_zgc.py

    基于python编程获取获取中关村手机、笔记本电脑、平板电脑、路由器、电视机等产品的型号列表。很全,实用。

    详解node字体压缩插件font-spider的用法

    字体包过大,字体包通常在几MB,严重拖累页面加载速度 分析: 文本内容为固定内容,不需要更新 文本内容大多为常用文字,大多文字用不上 插件: font-spider node 安装插件方法:npm install font-spider -g 操作:...

    高级java笔试题-juejin-spider:爬取掘金文章数据,查看在全站排行信息,查看自己关注、点赞、评论增长

    和数据分析,主要关注了下面几个排行和统计,排行点击直接查看 先上掘金前 50 排名,关注一波???? :party_popper: 等级,:boy: 关注数,:house: 公司 (1)[:party_popper: 4][:boy: 67909] [:house: 掘金] (2)[:...

    ist的matlab代码-green-spider:帮助您优化BÜNDNIS90/DIEGRÜNEN网站

    是的matlab代码绿蜘蛛 在网络上推广Bündnis90 / DieGrünen的用户友好性的举措和工具。 得出结果: 工具 蜘蛛:从B90 ...第一次成功运行后,一个新的make通话只需要几秒钟。 运行测试 简而言之: ma

    spider-admin-pro .zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    Zendaya Spider-Man Wallpaper Tab Theme-crx插件

    扩展加载时等待几秒钟,最好的遵循! - 在左上角,“齿轮”。加载设置面板,您可以在其中使用Toggle按钮打开或关闭功能。 Zendaya Spider-Man Extension可以为您提供只有高清背景(选择收藏或随机挑选)或使用一些很...

    微博爬虫,一个基于Scrapy框架的轻量微博爬虫,Sina Weibo Spider.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    千万级图片爬虫、视频爬虫 Image Spider.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    轻量级爬虫框架spider2local.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    Nicewords最新破解版4.5

    ·智能全自动建站系统:你要做的仅仅是设置几个关键词 ·全自动更新:NiceWords自动寻找信息,随时自动更新 ·在线的WEB系统:无须安装软件,买个空间就能用 ·非作弊:我们不要关键词堆砌,不要作弊,我们是正规站...

    Rss spider by nodejs , rss 爬虫,正文抓取.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    python-base.py: 千行代码入门Python python-visual.py: 15张图入门Matplotlib

    python_oneline.py: 几个小例子告诉你, 一行Python代码能干哪些事 python_requests.py: Python中最好用的爬虫库Requests代码实例 python_functional.py: Python进阶: 函数式编程实例(附代码) python_decorator.py:...

    Spider-Man: Homecoming Wallpapers New Tab-crx插件

    扩展加载时等待几秒钟,最好的遵循! - 在左上角,“齿轮”。加载设置面板,您可以在其中使用Toggle按钮打开或关闭功能。蜘蛛侠:Homecoming Extension有您的选项只有高清背景(选择收藏或随机挑选它)或使用一些很...

    DHT (Distributed Hash Table) Spider DHT 爬虫.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

    some spider code 财经资讯以及基金股票价格爬虫.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

Global site tag (gtag.js) - Google Analytics