`
yuaqian2003
  • 浏览: 13595 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spider技术综述 (转)

阅读更多
文/腾讯soso    邓大付


  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来说好像比较简单,但事实并非如此,因为活跃站点每天都会产生大量的新页面,搜索引擎是希望能及时发现和收录这些新页面,目前对搜索引擎的要求甚至到了分钟级别。而及时发现和收录这些新页面就涉及到如何才能精准的找到并且及时更新发布这些新页面的父页面,若精准性做的好,白天下载的量可以适量减少,否则就只能以量来补准了。


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

相关推荐

    baike_spider.zip

    本文将围绕“baike_spider”这一主题,探讨其工作原理、技术实现以及在实际应用中的价值。 首先,我们来理解“百科爬取”的概念。百科爬取,顾名思义,是通过自动化程序,即网络爬虫,从百科类网站(如百度百科、...

    依据ASP.NET图像的检索技术毕业设计(毕业设计源代码+论文+开题报告+外文翻译+文献综述+答辩PPT)

    最基本的搜索引擎的结构,是由Spider不停地从Web网上收集数据,存放在搜索引擎的数据库中。用户通过搜索引擎服务器上的Web接口,提出搜索请求,Web Server通过CGI或其它技术访问数据库,并将用户的搜索请求转换成...

    毕设开题报告-及开题报告分析【范本模板】.pdf

    - 网络爬虫技术源于Spider或Crawler,用于自动化抓取和处理互联网上的信息。随着大数据时代的发展,爬虫技术对于快速获取网络数据资源具有显著价值。网络爬虫可分为广义和狭义,前者涵盖所有使用HTTP协议检索Web...

    Text2SQL语义解析数据集、解决方案、paper资源整合项目.zip

    《Text2SQL语义解析:数据集、解决方案与研究资源综述》 Text2SQL任务是自然语言处理(NLP)领域的一个重要分支,它旨在将人类可读的文本查询转化为结构化的SQL(Structured Query Language)查询,从而帮助非专业...

    基于数据挖掘技术的语义搜索引擎的设计与实现,文献综述.docx

    2. **搜索引擎工作原理**:传统的搜索引擎主要由爬虫(Spider或Robot)、索引器和检索器组成。爬虫通过跟踪网页链接抓取网页内容,索引器建立关键词索引,检索器则根据用户查询在索引中查找匹配内容。然而,这种基于...

    任务书爬虫.docx

    Design features of the orb web of the spider, Araneus diadematus[J]. Behavioral Ecology, 2017, 5(3):280-287. 五、结论 面向特定主题的网络爬虫系统的设计与实现是实现特定范围的信息检索系统的关键。...

    《数据采集》实践报告模板.doc

    该项目的目标是通过Scrapy爬虫技术从特定网站抓取电影相关的数据,包括电影名称、评分、主演等信息。数据将被进一步处理和存储,以便进行数据分析和可视化。 #### 1.2 项目需求说明 - **数据采集**:实现一个高效...

    十大Web安全扫描工具

    Web 安全扫描工具综述 在 Web 应用程序安全中,扫描工具扮演着至关重要的角色。黑客经常会寻找 Web 页面的漏洞,作为攻击的入口。为了防止这种情况的发生,需要使用扫描工具来检测和修复这些漏洞。下面将对十大 Web...

Global site tag (gtag.js) - Google Analytics