爬虫原理详解spider
转载地址:http://ryee.iteye.com/blog/586342
一、搜索引擎蜘蛛基本原理 搜索引擎蜘蛛即Search Engine Spider,是一个很形象的名字。把互联网比喻成一张蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。搜索引擎蜘蛛是通过网页的链接
一、搜索引擎蜘蛛基本原理
搜索引擎蜘蛛即Search Engine Spider,是一个很形象的名字。把互联网比喻成一张蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。搜索引擎蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网,那么搜索引擎蜘蛛就可以用这个原理把互联网上所有节点的网页都抓取下来。
由于互联网上无数的网站页面,搜索引擎蜘蛛无法将所有的页面都下载保存到服务器。因此,许多搜索引擎的网络蜘 蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接广泛度(及外部链接的数量与质量)。
在抓取网页的时候,搜索引擎蜘蛛一般有两种策略:广度优先和深度优先(如下图所示)。
广度优先是指搜索引擎蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让搜索引擎蜘蛛并行处理,提高其抓取速度。深度优先是指搜索引擎蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是搜索引擎蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。
由于不可能抓取所有的网页,有些搜索引擎蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、 F属于第1 层,G、H属于第2层,I属于第3层。如果搜索引擎蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索 到,另外一部分不能被搜索到。 对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。
搜索引擎蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让搜索引擎蜘蛛不去抓取,但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给搜索引擎蜘蛛提供相应的用户名和密码。搜索引擎蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
二、网站与搜索引擎蜘蛛
每个搜索引擎蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。搜索引擎蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为 User -agent,用于标识此搜索引擎蜘蛛的身份。例如Google搜索引擎蜘蛛的标识为GoogleBot,Baidu搜索引擎蜘蛛的标识为 BaiDuSpider, Yahoo搜索引擎蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的搜索引擎蜘蛛过来过,什么时候过来的,以及读了多少数据等等。如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。
搜索引擎蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,如: http://www.ryeseo.com/robots.txt 。网站管理员可以通过robots.txt来定义哪些目录搜索引擎蜘蛛不能访问,或者哪些目录对于某些特定的搜索引擎蜘蛛不能访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限制,可以用以下两行来描述: User-agent: * Disallow:
当然,Robots.txt只是一个协议,如果搜索引擎蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止搜索引擎蜘蛛对于某些页面的访问,但一般的搜索引擎蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝搜索引擎蜘蛛对某些网页的抓取。
搜索引擎蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。通过这些标识,可以告诉搜索引擎蜘蛛本网页是否需要被抓取,还可 以告诉搜索引擎蜘蛛本网页中的链接是否需要被继续跟踪。
现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多搜索引擎蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。
三、内容提取
搜索引擎建立网页索引,处理的对象是文本文件。对于搜索引擎蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其 它格式等。
对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。搜索引擎蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。
HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:、、等,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网面的死链接,或者是链接到垃圾网站的外部链接。
对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
动态网页一直是搜索引擎蜘蛛面临的难题。所谓动态网页,是相对于静态网页而言,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给搜索引擎蜘蛛的抓取带来一些麻烦。由于开发语言不断的增多,动态网页的类型也越来越多,如:asp、jsp、php等。这些类型的网页对于搜索引擎蜘蛛来说,可能还稍微容易一些。搜索引擎蜘蛛比较难于处理的是一些脚本语言(如VBScript和JavaScript)生成的网页,如果要完善的处理好这些网页,搜索引擎蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给搜索引擎蜘蛛的抓 取带来很大的困难。
四、更新周期
由于网站的内容经常在变化,因此搜索引擎蜘蛛也需不断的更新其抓取网页的内容,这就需要搜索引擎蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
搜索引擎的更新周期对搜索引擎搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。搜索引擎的搜索引擎蜘蛛并不是所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次;相反对于一些不重要的网站,更新的周期就长,可能一两个月才更新一次。更新的频率与网站内容的更新以及该页面外部链接的广泛度有很大的联系。
一般来说,搜索引擎蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。
分享到:
相关推荐
### py爬虫163spider-master:网络爬虫项目详解 #### 一、项目概述 在当前的大数据时代背景下,网络爬虫技术已经成为获取互联网上公开数据的重要手段之一。"py爬虫163spider-master"项目,旨在通过Python语言实现...
【爬虫技术详解】 爬虫,全称网络爬虫,是一种自动遍历互联网并抓取网页信息的程序或脚本。在本项目中,“spider_爬虫_”特指针对研招网(中国研究生招生信息网)进行数据抓取的爬虫。研招网作为我国官方的研究生...
【Spider原理详解】 Spider,又称为网络爬虫或网络机器人,是互联网中一种自动化程序,其主要任务是在互联网上抓取网页信息。Spider的基本工作原理是通过跟随网页上的超链接,像一只蜘蛛在巨大的蜘蛛网上爬行一样,...
**微博爬虫项目详解** 该项目是一个基于Python的Scrapy框架构建的微博爬虫,名为"Sina Weibo Spider"。Scrapy是一个强大的、高效的网络爬虫框架,特别适合于抓取结构化的数据。在这个项目中,它被用来从新浪微博...
**Spider:开源爬虫引擎详解** Spider是一种优秀的开源爬虫引擎,主要针对互联网数据的抓取和处理。它以其高效、灵活和可扩展性而受到开发者们的青睐。在这个Eclipse项目中,Spider被设计为一个Java开发的工具,...
### 网络爬虫Java实现原理详解 #### 一、引言 网络爬虫,又称网络蜘蛛,是一种能够自动访问互联网上的网页并提取所需数据的程序。它们广泛应用于搜索引擎优化、市场研究、数据分析等领域。Java作为一种强大的面向...
《分布式新浪微博爬虫详解》 在信息技术领域,数据采集与分析是至关重要的环节,而微博作为社交媒体的重要平台,其上的用户行为数据具有极高的研究价值。"SinaSpider-master"项目便是针对这一需求,设计出的一款...
### Java Spider原理与构成 Java Spider 是一种基于Java语言开发的网络爬虫工具,它能够自动地抓取网页上的信息并进行分析处理。本篇内容将深入探讨Java Spider的工作原理、构成及其应用。 #### 工作原理 Java ...
**Python爬虫Bajie详解** 在信息技术领域,Python是一种广泛应用的编程语言,因其简洁的语法和丰富的库支持,尤其适合构建网络爬虫。本文将深入探讨一个名为"Bajie"的Python爬虫项目,这是一个开源工具,旨在帮助...
Python爬虫是网络数据...通过这个实例,我们可以理解Python爬虫的基本工作原理,学习如何组织和实现一个简单的爬虫项目。进一步深入学习,可以掌握更高级的爬虫技术,如多线程、分布式爬虫以及更复杂的网页解析技巧。
为了更好地理解Scrapy的工作原理,下面通过一个简单的实战案例来说明如何使用Scrapy进行网页爬取。 ##### 案例背景 假设我们需要从某个新闻网站上抓取最新的新闻标题和发布时间等信息。 ##### 步骤一:创建项目 ...
### 搜索引擎的搜索原理与网络爬虫技术详解 搜索引擎是现代互联网不可或缺的一部分,它能够帮助用户快速地从浩瀚的互联网中找到所需的信息。本文将深入探讨搜索引擎的工作原理,特别是其中的关键步骤——网络爬虫...
通过深入学习以上知识点,并结合"Spider.rar"中的代码实例,你将能够掌握如何用C语言构建一个基本的网络爬虫,进一步理解网络通信与数据抓取的核心原理。同时,不断实践和优化,将助你在网络爬虫领域更上一层楼。
### Python版网络爬虫知识点详解 #### 一、Scrapy框架概述 Scrapy是一个用于Web爬取的强大Python框架。该框架旨在帮助开发者高效地抓取网页数据,并从中提取有用的信息。文档版本为0.17.0,发布日期为2013年5月27...
《VC++实现的多线程网络爬虫技术详解》 在信息技术日新月异的今天,网络爬虫作为数据挖掘的重要工具,其重要性日益凸显。本文将详细讲解一款基于VC++开发的多线程网络爬虫源代码,旨在帮助读者深入理解网络爬虫的...
课程中会介绍Scrapy的原理、基本使用和项目结构,包括Spider的创建、ITEM Pipelines的编写。在Scrapy项目中,我们通常需要创建一个startproject,然后生成Spider模板,编写Spider来处理链接爬取和页面解析,以及编写...
《Python爬虫壁纸软件开发详解》 Python作为一门强大的编程语言,因其简洁的语法和丰富的库支持,在数据处理和网络爬虫领域应用广泛。本文将深入探讨如何利用Python编写一个爬虫壁纸软件,旨在帮助初学者理解基础...
**PHP爬虫技术详解** PHP爬虫是一种使用PHP编程语言编写的应用程序,它能够自动浏览互联网上的网页,抓取所需信息。在这个名为"phpspider-master"的压缩包中,包含了一个PHP爬虫的示例项目,可以帮助我们理解并学习...