搜索引擎抓取系统概述(一)
编者按:站长朋友们,今后定期都将在这里跟大家分享一些有关搜索引擎工作原理及网站运营相关的内容,今天先简单介绍一下关于搜索引擎抓取系统中有关抓取系统基本框架、抓取中涉及的网络协议、抓取的基本过程三部分。
互联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做“spider”。例如我们常用的几家通用搜索引擎蜘蛛被叫做:Baiduspdier、Googlebot、Sogou Web Spider等。
Spider抓取系统是搜索引擎数据来源的重要,如果把web理解为一个有向图,那么spider的工作过程可以认为是对这个有向图的遍历。从一些重要的种子 URL开始,通过页面上的超链接关系,不断的发现新URL并抓取,尽大可能抓取到更多的有价值网页。对于类似百度这样的大型spider系统,因为每时 每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对spider过去抓取过的页面保持更新,维护一个URL库和页面库。
1、spider抓取系统的基本框架
如下为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、dns解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。
2、spider抓取过程中涉及的网络协议
搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的 内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的 规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。以下简单列举:
http协议:超文本传输协议,是互联网上应用为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网 站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务 器类型、网页近更新时间等内容。
https协议:实际是加密版http,一种更加安全的数据传输协议。
UA属性:UA即user-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。
robots协议:robots.txt是搜索引擎访问一个网站时要访问的个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。 robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考 http://www.robotstxt.org 。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robots的meta标 签,index、follow、nofollow等指令。
3、spider抓取的基本过程
spider的基本抓取过程可以理解为如下的流程图:
4.spider抓取过程中的策略
spider在抓取过程中面对着复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下简单介绍一下抓取过程中涉及到的主要策略类型:
1、抓取友好性:抓取压力调配降低对网站的访问压力
2、常用抓取返回码示意
3、多种url重定向的识别
4、抓取优先级调配
5、重复url的过滤
6、暗网数据的获取
7、抓取反作弊
8、提高抓取效率,高效利用带宽
1、抓取友好性
互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问又能尽量多的抓取到有价值资源的目的。
通常情况下,基本的是基于ip的压力控制。这是因为如果基于域名,可能存在一 个域名对多个ip(很多大网站)或多个域名对应同一个ip(小网站共享ip)的问题。实际中,往往根据ip及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。
对同一个站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。
2、常用抓取返回码示意
简单介绍几种百度支持的返回码:
1) 常见的404代表“NOT FOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条url也不会抓取;
2) 503代表“Service Unavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条url直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条url仍会被认为是失效链接,从库中删除。
3) 403代表“Forbidden”,认为网页目前禁止访问。如果是新url,spider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。
4)301 代表是“Moved Permanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。
3、多种url重定向的识别
互联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spider对url重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http 30x重定向、meta refresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。
4、抓取优先级调配
由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到优的抓取效果。
5、重复url的过滤
spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到核心的是快速查找并对比,同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。
6、暗网数据的获取
互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如“百度站长平台”“百度开放平台”等等。
7、抓取反作弊
spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。
关键词的选择步骤,如何选择网站的目标关键词?
选择关键词:内容相关,搜索次数多,竞争小,不能太广泛(旅游),也不能太特殊(公司名称)找到平衡点
搜索引擎下拉框,收录量(intitle:)(越多竞争越大),百度指数(Index.baidu.com),竞争对手网站的关键词,内页排名情况,百度推广位置
本文将讲述选择关键词的具体步骤。此处提供的仅仅是一种方法,每个人完全可以根据自己的习惯和偏好发展出自己的有效的方法。
1、列出大量相关关键词
要找出合适的关键词,首先就要列出尽量多的相关的关键词,可以从几方面得到:
1)了解所要优化的网站所在的行业,运用你的常识,如果你自己是用户,会用什么词。
2)问周围的亲戚朋友同学等,他们会用什么关键词来搜索。
3)去同行业竞争者的网站,看一下前二三十名的网站,他们都在标题标签里放了哪些关键词。
4)搜索引擎本身也会提供相关信息。在你搜索一个关键词的时候,很多搜索引擎会在底部列出”相关搜索”或写着”搜索了ABC这个词的人,也搜索了DEF”等等,这些都是可以扩展关键词的地方。
5)关键词研究工具也会列出扩展的关键词。
6)有不少线上工具会提供你近义词,错拼词等等,这种工具一般以英文为多。
2、研究这些关键词的竞争程度
经过步以后,你应该已经有了一大串备选关键词,通常应该至少有几十个,可能上百上千。
然后就要看这些关键词的竞争程度如何,比如你希望找到竞争比较小,同时搜索次数比较多(热门)的关键词,这样效能就比较高。
有两个指标可以看关键词的竞争程度。
一是各个搜索引擎都会在搜索结果右上角列出某个关键词返回的总相关网页数。这个数字大致反映了与这个关键词相关的网页数,而这些网页都是你的竞争对手。
另外一个可以判断关键词竞争程度的是这个关键词要出现在竞价排名广告情况。
研究这些关键词被搜索的次数
关键词的竞争程度是一方面,另外一个很重要的方面是这些关键词是否真的被用户搜索?搜索的次数是多少?当然被搜索的越多越好。
雅虎的PPC查询工具列出了某个关键词被搜索的具体次数,在百度和搜狐的查询工具里虽然没有列出具体次数,但有列出被搜索次数在零至一百或一百至两百等不同的区段,也大致可以判断某个关键词被真正搜索的情况。
3、选择关键词
答案很明显,就是选择效能高的两到三个关键词作为你主页的目标关键词。剩下其他的相关关键词别扔掉,还会有其他用途。
不过有的时候也可能不选择效能高的关键词,比如说你所在行业的宽泛的关键词,虽然由于竞争厉害所以效能比较低,但是你有时间,有预算,并且有野心想瞄准这个关键词,那也不妨一试。