搜索引擎抓取系统

作者:鼎极网络发布日期:2019-11-13浏览次数:6

  搜索引擎抓取系统概述()

  编者按:站长朋友们,今后定期都将在这里跟大家分享一些有关搜索引擎工作原理及网站运营相关的内容,今天先简单介绍一下关于搜索引擎抓取系统中有关抓取系统基本框架、抓取中涉及的网络协议、抓取的基本过程三部分。

  互联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做“spider”。例如我们常用的几家通用搜索引擎蜘蛛被叫做:BaiduspdierGooglebotSogou Web Spider等。

  Spider抓取系统是搜索引擎数据来源的重要,如果把web理解为一个有向图,那么spider的工作过程可以认为是对这个有向图的遍历。从一些重要的种子 URL开始,通过页面上的超链接关系,不断的发现新URL并抓取,尽大可能抓取到更多的有价值网页。对于类似百度这样的大型spider系统,因为每时 每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对spider过去抓取过的页面保持更新,维护一个URL库和页面库。

  1spider抓取系统的基本框架

  如下为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、dns解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。

1.png

  2spider抓取过程中涉及的网络协议

  搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的 内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的 规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。以下简单列举:

  http协议:超文本传输协议,是互联网上应用为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网 站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务 器类型、网页近更新时间等内容。

  https协议:实际是加密版http,一种更加安全的数据传输协议。

  UA属性:UAuser-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。

  robots协议:robots.txt是搜索引擎访问一个网站时要访问的个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。 robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考 http://www.robotstxt.org 。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robotsmeta标 签,indexfollownofollow等指令。

  3spider抓取的基本过程

  spider的基本抓取过程可以理解为如下的流程图:

2.png

  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”,认为网页目前禁止访问。如果是新urlspider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。

  4)301 代表是“Moved Permanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。

  3、多种url重定向的识别

  互联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spiderurl重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http 30x重定向、meta refresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。

  4、抓取优先级调配

  由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到优的抓取效果。

  5、重复url的过滤

  spider在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到核心的是快速查找并对比,同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。

  6、暗网数据的获取

  互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如百度站长平台”“百度开放平台等等。

  7、抓取反作弊

  spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。

 


关键词:

代码优化

1、HTML源代码分析教程

1、<!--页面注解-->
  2、<html>
  3、<head>

  4、<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  5、<meta http-equiv=“Content-Language” content=zh-cn>
  6、<title>页面标题</title>

  7、<meta name="keywords" content="关键词">
  8、<meta name="description" content="网站描述">
  9、<link href="inc/css.css" type="text/css" rel="stylesheet">


  10、</head>
  11、<body>

  12、<div>
  13、<h1>页面内容标题</h1>
  14、<h2>页面相关性标题</h2>
  15、<h3>标题系列</h3>
  16、<h4>标题系列</h4>
  17、<h5>标题系列</h5>
  18、<h6>标题系列</h6>


  19、<img src="xxx.jpg" alt="图片说明">
  20、<a href="/" title="链接说明">锚文本</a>
  21、<strong>重点关键词强调</strong>
  22、<b>关键词强调</b><u>关键词强调</u><i>关键词强调</i>
  23、</div>


  25、<div>
  26、版权部分关键词强调
  27、</div>


  28、</body>
  29、</html>

 ********************************************************

  注:<body>..</body>标签区中的罗列,都是一些基础的HTML标签,这些标签出现的次序是可以变化的。

 1行的<!--页面注解-->

  这个标签是用来做HTML代码注解的,这种形式的注解在浏览器中是不会显示的,而搜索引擎可以读到。所以这个标签有的时候会成为作弊的一种形式,而这种原始的作弊方式、早被搜索引擎

 4行到第5行<!--meta标签--> 

  对于Meta标签来说他包含了很多参考、其中需了解“Content-Type”代表页面编码、“Content-Language”代表页面语言,这是一个很容易被SEO初学者忽悠的标签、一旦设置错误、可能影响搜索引擎对页面的抓取及收录。

 6行<title>页面标题</title>  重点了解

  页面标题对搜索引擎排名的优化是非常大的、而在SEO优化过程中、也是重点优化对像之一、尤其是百度对页面标题的评分很高、而标题的书写也直观重要、包括:标题是否完全匹配、是否包含与被包含关键词等

 7行<meta name="keywords" content="关键词">

  关键词标签对于现在的搜索引擎或SEO优化者来说价值越来越低了、以前搜索引擎对关键词标签是很看重了、由于黑帽的手法慢慢体现、一些SEO人员以堆积关键词标签来提升网站排名为目的,导致现在搜索引擎对关键词标签、可以说是忽悠判断,但是个人认为、虽然是被忽悠、但是首页的关键词还是可以手工处理下、至于内页可以忽悠。

 8行<meta name="description" content="网站描述">

  主要在搜索引擎结果中体现,与关键词标签一样、目前不太受搜索引擎看中、但描述标签与关键词标签是有区别的、关键词标签浏览器用户正面是无法看到,但是描述标签一旦被搜索引擎索引、是会体现在搜索引擎结果中、而这个结果是可以直接响影用户点击率、可以说一个好的描述可以为你网站增加很多点击及转化、提示:由于搜索引擎时刻在更新、算法及索引方法也不段在进步、或者说很人性化、所以搜索引擎会根据用户搜索“关键词”去抓取网站描述。所以个人建议、还需要注意首页描述及着陆页描述的书写、其它部分可以使用程序调用、

 13行<h1>页面内容标题</h1>

  H1标题、一个代码优化中重点标签,也是搜索引擎定位这个页面主题的依据,如果你的<h1>标签里没有出现你的页面关键字,那么这是一种很大的损失,这里的权重相对于其它的在<body>区的标签来说更加重要。在代码优化中、它的重要性仅次于<title>。所以,必需认真对待你的页面<h1>标签的优化,一般使用在文章页面来的文章标题优化。(H1+TITLE 可以说是SEO优化中的致命组合)


 14行到第18行<h2>页面相关性标题</h2>

  对比<h1>标签来说、H2标签重要程度相对来说就降底了,一般使用在长尾关键词及相关内容方面,而<h3>~<h6>这些标签,重要性是依次递减的,在一个页面的权重越来越低。

 19行<img src="xxx.jpg" alt="图片说明">

        我们知道搜索引擎是不可以抓取图片内容的、那么如何合理的告诉搜索引擎某张图片代表什么了,ALT标签就是告诉搜索引擎图片含义、让搜索引擎的理解图片内容。


 20行<a href="/" title="链接说明">锚文本</a>

        锚文本、我们称为关键词链接,关键词链接在SEO优化当中是一个非常重要优化对象之一,而锚文本链接又可以扩展,外部链接形式的锚文本及内部链接形式的锚文本。具体对SEO的作用是需要判断链接的形式不同而不同。

 21行<strong>重点关键词强调</strong>

        <strong>标签基实重要性仅次于<h1>,也是强调一类、包括:<b>、<u>、<i>等标签。而对于搜索引擎来说<strong>标签的影响要高说<b>、<u>、<i>等

 26行版权部分优化

        随着搜索引擎越来越强大、网页底部、版权部分也是SEO优化者需要优化的地方、一般来说底部文件对于程序来说都是全部调用、所以如果能在底部加上一个关键词链接指向网站首页、那么这种内部式全部投票也是一种对首页页面权重的提高。

  网站代码优化目的

  1、去掉网站多余的代码,以减少网站的大小,提高网站的加载速度和用户体验。

  2、网站代码优化是站长必须要掌握的基本技能,这关系到搜索引擎蜘蛛是否会对你的网站感兴趣,冗长无用的代码会让蜘蛛很难理解,增加蜘蛛抓取网站的难度。

3、同时,网页的精简还关系到网站的加载速度,对用户体验至关重要。

  网页代码优化的原因:

  (1) 可以减少网页的体积,加快网页的下载速度;

  (2) 提高蜘蛛对信息的抓取的速度和准确性

  (3) 有利于减少错误的代码,提高页面的对蜘蛛的友好性

  (4) 便于管理人员维护,提高工作效率

  (5) 减少网页的噪音,突出页面的主题

  我们可以从以下几个方面来进行精简代码:

  一、清除页面中多余的代码:空格代码、stylefont重复定义的代码

  有的网站以为制作者的代码书写习惯问题,页面会有很多空格代码。不要小看这些体积很小的代码,积攒多了,也会使我们的网站异常的臃肿。

  很多网站都是采用的DIV+CSS,在CSS中定义了文字的字体,颜色,以及页面的排版,但是在网站的其他地方还用了以style以及font来再次定义字体字体,这些代码完全没有必要重复定义,属于可以精简的代码。

  二:使用DIV+CSS布局网页

  虽然现在div+css已经很成熟了,但是很多网页设计者可能考虑到网页的兼容性以及布局的简易性还是使用老式的table布局,如上图所示。虽然table布局很方便,但是其弊端也是显而易见的,那就是会大大增加网页的大小,尤其是多层表格的嵌套。这种布局不仅会提升体积,同时如果嵌套数太多的话就会影响到搜索引擎的爬行,影响到站点的收录。

  另外,一些网站会使用外部文件,将cssjs放在外部文件中,页面html中只要放一样代码调用就可以了。有时候我们去查看的一些源文件代码,会看到很多css代码以及javasript代码,将javascript放置在网站页面的html文件中的前面,而真正能用到得一些文字部分这被推倒了html的后面。企赢001认为一般页面代码中的这种代码都需要精简。

  三、代码注释

  很多程序人员在编写代码是都习惯在别人看不懂的地方给出一段注释,这些代码往往是为了几个程序员之间的协同工作,对于外人以及搜索引擎来说没有任何用处,相反还会给搜索引擎蜘蛛带来一定的困扰。

  四、 减少页面表格。

  现在的网站用什么做?很多程序员想法就是采用CSS去做,采用CSS去排版,这种做法呢,就使页面中的表格大大的降低了,但是网站也不能没有表格,有些事必须使用到得,使用表格本身没什么,但是有很多网站都采用嵌套表格,一般这样的表格形式会给网站产生大量的垃圾代码,并且这些垃圾代码都是没有任何用处的代码,这一类代码也是我们网站需要精简的代码之一。

五、降低页面对于JS的依赖性

  现在来说,JS对于搜索引擎并不不友好,虽然有消息称搜索引擎不会对JS有厌恶的情绪,但是多一事不如少一事。虽然JS可以制作出很多的效果,但是网页中大量的JS将影响蜘蛛对页面的抓取和增加网页体积。尤其是页面的关键位置如导航栏,尽量采用DIV+CSS的设计方法。

  六、尽量不要使用内嵌式CSS

  内嵌式CSS分为两种,一是在head区域的普通内嵌式,二是在标签内出现的行内内嵌式css,无论是何种内嵌CSS方式结果都会提升页面的体积。对此我们可以尽量使用外调式的CSS来为站点页面的体积瘦身。

  七、将html控制方式转换为CSS控制

  很多网页设计者习惯在标签内对内容进行控制。比如img标签里通过widthheight来控制图片的大小。尽量将这些代码转换成外调式的CSS,使网页代码更加的瘦身。

  八:对网页进行GZIP压缩

  这一点可能大家都很熟悉。这个功能需要你的服务器的支持。GZIP压缩一般能对网页进行30%-80%的压缩,是重要的一种优化效果。

 

标签优化 

 ()、常用标签

  包括htmlbodyheadfootpbiemstrongfontdiv/brspanimagetitlekeywordsdescriptiontaganofollowcanonicalh

  ()、标签的一般写法: (特殊标签除外,比如</br>)

  (