`
wangwei3
  • 浏览: 122090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spider技术综述

阅读更多
转自soso  出处:http://blog.csdn.net/soso_blog/archive/2010/07/28/5771350.aspx
    Spider系统是搜索引擎当中进行互联网上数据采集的一个核心子系统。在这个子系统当中,通常先种入一批种子Url,Spider对这些种子Url采集之后将链接提取入库,然后再对新入库的Url进行采集,并且负责对采集过的Url进行更新采集,如此循环。

    随着各种垂直搜索引擎的不断发展,整个Spider在功能上又分为传统的收集互联网上所有数据的大Spider和服务于某个专门领域的聚焦Spider。两类Spider的不同之处在于,后者需要一个过滤器来过滤掉那些专门领域不要的Url。从架构上来讲,两类Spider通常都会采用分布式的架构。从技术实现上来说,Spider通常都会包括Url存储库,抓取调度模块,页面采集模块,链接分析和抽取模块,反垃圾模块等几个核心模块。本文就Url存储、抓取调度的主流技术和技术难点做一个简单的描述。

    1:Url存储库:近些年互联网发展迅猛,互联网上的Url数量也极为庞大,所以对Url库的核心要求之一就是可扩展性必须要很强,在爬行过程中Url数目逐步增大时,要能及时的进行扩展。另外一个要求就是能便于抓取调度技术的实施。当然,对容错性和负责均衡方面也需要有充足的考虑。


    2:抓取调度:  如果把Spider看成互联网上的蜘蛛的话,抓取调度模块就是蜘蛛的大脑,它会根据Url库里面收录的Url的情况,来调度指挥蜘蛛先爬哪些Url,后爬哪些Url。对于一个Spider来说,有两类调度需要处理,一类是未抓Url的抓取,一类是已抓Url的更新抓取。 


    未抓Url的抓取调度策略通常分为如下三大类:深度优先抓取,广度优先抓取和最优调度优先抓取。

    深度优先抓取会在每个Site里面一个分支一个分支的进行抓透。由于互联网上很多站点都存在类似陷阱的情况,采用深度优先抓取通常容易在某个Site内陷入死循环。广度优先通常会沿着某个Site的每一层来抓,先抓完一层然后再抓下一层。由于能有效避免深度优先抓取可能会陷入死循环的问题,广度优先抓取得到了较为广泛的使用。然而,对于广度优先抓取来说,要抓取到某个Site内层次比较深的高信息含量的数据,通常会比较困难。

    为了有效地避免上述问题,最优调度优先抓取的方法被Spider的一些研究人员提出。在这种调度方法中,通常会一边抓取一边进行抓取Url的质量评估,用已抓Url的质量来预估未抓Url集合当中每个Url的质量,然后使用这些质量因子对未抓Url进行排序,依据排序的结果来进行抓取调度,例如,通过抓取Url后形成的链接地图计算PageRank之后,按照PageRank值的大小来进行排序等。


    已抓Url的更新抓取是调度系统中的一个难点,一种最简单的方法是将所有已经抓取过的Url设置一个下一次抓取的时间值,对其进行定期更新。然而,在互联网上,各个站点的活跃度,同一个站点内的不同Url的更新活跃度都存在很大的差异。如果采用统一的值定期更新的方法,一方面活跃站点的活跃页面通常会被更新不及时,这样会造成一些链接的遗失和一部分索引数据的老化;另外一方面,不活跃站点的Url会造成大量的无效更新,降低了更新的效率。

    一些技术文章曾经有过少量的介绍Google对不同的站点采用不同的更新周期,例如教育网当中的页面更新周期会明显长于一些商业网站。然而,在站点级别上进行区别是远远不够的,调度当中最好能够对单个的Url根据其属性采用不同的更新周期,具体的做法值得深入研究。


    抓取调度中的另一个难点是对每个Site的压力评估,在这个方面,Google可能是行业的领先者,其优雅抓取的方式得到了大部分站点的认可。

    压力评估的一个困难在于互联网上各个站点服务器能力的不同和服务架构的不同。大型的网站通常采用CDN的方式为用户服务,其服务能力超强,对于这些站点,Spider每天抓取上百万的Url对其流量都影响不大。而一些小型站点通常采用服务器托管的方式,一方面带宽有限,另外一个方面多个站点通常共用一个服务器,多站点的并行抓取通常会使得那些服务器瘫痪。

    压力评估的另外一个困难在于大部分的站点都会期望白天服务期间,Spider能尽量少抓取页面;而到了晚上能多抓取页面。这个期望看起来对Spider来说好像比较简单,但事实并非如此,因为活跃站点每天都会产生大量的新页面,搜索引擎是希望能及时发现和收录这些新页面,目前对搜索引擎的要求甚至到了分钟级别。而及时发现和收录这些新页面就涉及到如何才能精准的找到并且及时更新发布这些新页面的父页面,若精准性做的好,白天下载的量可以适量减少,否则就只能以量来补准了。

    未抓的调度、已抓的更新,如何做到将新产生的高信息含量的数据及时的抓取下来,欢迎大家一起探讨。



分享到:
评论

相关推荐

    Black_Spider_1.7.2.zip_Black Spider 1.7.2_Black_Spider_1.7.2_bla

    "black_spider"和"spider"可能是该工具的别名或者核心模块,它们可能涉及到网络爬虫技术,用于遍历和分析目标网络的结构,查找可能的安全薄弱环节。而"surfacezdc"可能是指工具的表面区域扫描功能,即扫描目标系统...

    weibo_spider_爬虫python_关键词爬虫_python_python爬虫_spider_源码.rar

    关键词"python爬虫"和"spider_源码"暗示我们这里将深入探讨Python编程语言中的网络爬虫技术,特别是针对微博平台的数据抓取。这个压缩包包含了一个名为"weibo_spider.py"的Python源代码文件,这意味着我们将分析这个...

    java毕业设计——基于网络spider技术的网络新闻分析(论文+源代码+数据库+讲解视频).zip

    java毕业设计——基于网络spider技术的网络新闻分析(论文+源代码+数据库+讲解视频).zip java毕业设计——基于网络spider技术的网络新闻分析(论文+源代码+数据库+讲解视频).zip java毕业设计——基于网络spider...

    Spider 用于网络分析

    最后,`chinaz.com`是一个提供互联网资讯和技术资源的网站,其中可能包含有关Spider技术的教程、工具和新闻。使用Spider对这个网站进行爬取,可以获取到最新的互联网动态和相关技术信息,进一步提升网络分析的能力。...

    基于Jsp的网络spider技术的网络新闻分析系统设计与实现(项目报告+源代码+数据库+演示录像).zip

    基于Jsp的网络spider技术的网络新闻分析系统设计与实现(项目报告+源代码+数据库+演示录像).zip 基于Jsp的网络spider技术的网络新闻分析系统设计与实现(项目报告+源代码+数据库+演示录像).zip 基于Jsp的网络spider...

    Article_Spider_spider_

    在信息技术领域,网络爬虫(Web Spider)是一种自动遍历网络并抓取网页信息的程序。在这个案例中,我们关注的是一个特定于“Article Spider”的项目,它专注于从cnblogs.com这个知名的中文博客平台抓取新闻资源。...

    spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项-spider-admin-pro.zip

    标题"spider-admin-pro 一个集爬虫Scrapy+Scrapyd爬虫项-spider-admin-pro.zip"表明这是一个基于Scrapy和Scrapyd的爬虫项目管理平台,名为"spider-admin-pro"。它已经被打包成.zip文件供用户下载和使用。这个平台...

    JDspider_jdspider_python爬虫_京东_

    在Python爬虫领域,JDspider可能采用了以下核心技术: 1. **网络请求库**:Python中的requests库常用于发送HTTP请求,获取网页HTML内容。JDspider可能利用requests库与京东服务器交互,获取商品详情页的HTML源码。 ...

    spider

    7. **优化技术**:在机器学习中,优化通常涉及调整模型参数以最小化损失函数。Spider可能利用梯度下降、牛顿法、随机梯度下降(SGD)等优化算法。 8. **并行计算**:Matlab支持并行计算,这使得在多核CPU或GPU上...

    python-spidermonkey

    《用perl解析JavaScript之JavaScript模块的安装--SpiderMonkey》 安装依赖软件: 安装pyrex:sudo apt-get install python-pyrex 安装g++:sudo apt-get install g++ 安装libjs.so: $ tar zxvf js-1.7.0.tar...

    开源webspider网络蜘蛛webspider-1.0.0.6.tar.gz

    在技术实现上,Webspider充分利用了HTTPSQS(一种高效的队列服务)来协调和调度爬虫的工作,确保了多线程并行抓取的效率。同时,借鉴了淘宝的Tair——一个高性能、分布式内存存储系统,这使得Webspider具备了扩展到...

    spider原理资料

    由于技术限制,搜索引擎的Spider无法抓取互联网上的所有网页。它们通常只抓取那些链接深度较高的网页,即被更多其他网页链接的页面,认为这些页面更具重要性。此外,有些Spider还会设定访问层数限制,避免过度抓取...

    wechat_spider 微信公众号爬虫

    wechat_spider 微信公众号爬虫。 需要环境: mysql、redis 支持平台: windows/mac 。 示例配置文件: mysqldb: ip: localhost port: 3306 db: wechat user: root passwd: "123456" auto_create_tables: true ...

    通过MOZILLA的javascript引擎(SpiderMonkey)执行js代码

    这种动态优化技术使得JavaScript能够接近原生代码的速度运行。 在Windows环境中,如果你想要利用SpiderMonkey引擎执行JavaScript代码,你需要以下组件: - `js32.dll`:这是SpiderMonkey的动态链接库,包含了引擎...

    spiderMonkey_js-1.5-rc6a.tar.gz_SpiderMonkey_openVXI_spiderMonke

    SpiderMonkey是Mozilla公司开发的一款JavaScript引擎,它是Firefox浏览器的核心组成部分之一。这个名为"spiderMonkey_js-1.5-rc6a.tar.gz"的压缩包文件包含了SpiderMonkey的1.5版本的源代码,其中rc6a代表的是...

    spider_spider_spiderpython官网_爬虫_

    总之,Python爬虫技术结合requests、BeautifulSoup等库,可以轻松实现对豆瓣网等网站的数据抓取。同时,理解和应用IP更换、模拟登录等策略,能够提升爬虫的稳定性和持久性。通过阅读并理解这个项目,你可以深入学习...

    spider_news_all, Scrapy Spider for 各种新闻网站.zip

    在"spider_news_all"项目中,开发人员创建了一个Scrapy蜘蛛,专门用于抓取各种新闻网站的内容。这个开源项目意味着任何人都可以查看、学习或在现有代码基础上进行修改。 首先,我们要了解Scrapy的基础架构。Scrapy...

    spidermonkey31.2.0开发包

    - **高性能**:SpiderMonkey采用了即时编译(JIT)技术,能够将JavaScript代码转换为机器码,显著提升执行速度。 - **动态性**:支持JavaScript的动态特性,如动态类型、函数式编程和原型继承。 - **内存管理**:...

    Scrapy框架中Spider的用法

    Scrapy 框架中 Spider 的用法 Scrapy 框架中 Spider 的用法是指在 Scrapy 里面要抓取网站的链接配置、抓取逻辑、解析逻辑里都是在 Spider 里面去完成的。在实现 Scrapy 爬虫项目里面,最核心的就是 Spider 类了,它...

Global site tag (gtag.js) - Google Analytics