关于抓取的优先级,在此重点强调:

√ 网站更新频率:经常更新高价值的站点,优先抓取

√ 受欢迎程度:用户体验好的站点,优先抓取

√ 优质入口:优质站点内链接,优先抓取

√ 历史的抓取效果越好,越优先抓取

√ 服务器稳定,优先抓取

√ 安全记录优质的网站,优先抓取

顺畅稳定的抓取是网站获得搜索用户、搜索流量的重要前提,影响抓取的关键因素。

1.1  URL规范

网站的URL如何设置,可参考之前青岛网站优化写过的一篇文章《URL规范详解

1.1.1  参数

URL中的参数放置,需遵循两个要点:

√ 参数不能太复杂

√ 不要用无效参数,无效参数会导致页面识别问题,页面内容最终无法在搜索展示

另外,很多站长利用参数(对搜索引擎和页面内容而言参数无效)统计站点访问行为,这里强调下,尽量不要出现这种形式资源,例如:

https://www.test.com/deal/w00tb7cyv.html?s=a67b0e875ae58a14e3fcc460422032d3

或者:

http://nmtp.test.com/;NTESnmtpSI=029FF574C4739E1D0A45C9C90D656226.hzayq-nmt07.server.163.org-8010#/app/others/details?editId=&articleId=578543&articleType=0&from=sight

 

1.2  链接发现

1.2.1  百度蜘蛛

很多站长会咨询如何判断百度移动蜘蛛,这里推荐一种方法:只需两步,正确识别百度蜘蛛

查看UA

如果UA都不对,可以直接判断非百度搜索的蜘蛛,目前对外公布过的UA是:

移动UA 1:

Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,likeGecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0;+http://www.baidu.com/ search/ spider.html)

移动UA 2:

Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 likeMac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)

PC UA 1:

Mozilla/5.0 (compatible; Baiduspider/2.0;+http://www.baidu.com/search/spider.html)

PC UA 2:

Mozilla/5.0(compatible;Baiduspider-render/2.0;+http://www.baidu.com/search/ spider.html)

反查IP

站长可以通过DNS反查IP的方式判断某只蜘蛛是否来自百度搜索引擎。根据平台不同验证方法不同,如Linux/Windows/OS三种平台下的验证方法分别如下:

在Linux平台下,可以使用hostip命令反解IP来判断是否来自百度蜘蛛的抓取。百度蜘蛛的hostname以*.baidu.com格式命名,非*.baidu.com即为冒充。

seo优化技术:网站抓取的友好性-阿君seo技术博客

这里需要在提出一点,建议使用DNS更换为8.8.8.8后进行nslookup反向解析,否则很容易出现无返回或返回错误的问题。

在Windows平台下,可以使用nslookup ip命令反解IP来判断是否来自百度蜘蛛的抓取。打开命令处理器输入nslookup xxx.xxx.xxx.xxx(IP地址)就能解析IP,来判断是否来自百度蜘蛛的抓取,百度蜘蛛的hostname以*.baidu.com格式命名,非*.baidu.com即为冒充。

在Mac OS平台下,网站可以使用dig命令反解IP来判断是否来自百度蜘蛛的抓取。打开命令处理器输入dig xxx.xxx.xxx.xxx(IP地址)就能解析IP,来判断是否来自百度蜘蛛的抓取,百度蜘蛛的hostname以*.baidu.com的格式命名,非*.baidu.com即为冒充。

1.2.2  链接提交

链接提交工具是网站主动向百度搜索推送数据的工具,网站使用链接提交可缩短爬虫发现网站链接时间,目前链接提交工具支持四种方式提交:

√ 主动推送:是最为快速的提交方式,建议将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度抓取。

√ Sitemap:网站可定期将网站链接放到Sitemap中,然后将Sitemap提交给百度。百度会周期性的抓取检查提交的Sitemap,对其中的链接进行处理,但抓取速度慢于主动推送。

√ 手工提交:如果不想通过程序提交,那么可以采用此种方式,手动将链接提交给百度。

√ 自动推送:是轻量级链接提交组件,将自动推送的JS代码放置在站点每一个页面源代码中,当页面被访问时,页面链接会自动推送给百度,有利于新页面更快被百度发现。

简单来说:建议有新闻属性站点,使用主动推送进行数据提交;新验证平台站点,或内容无时效性要求站点,可以使用Sitemap将网站全部内容使用Sitemap提交;技术能力弱,或网站内容较少的站点,可使用手工提交方式进行数据提交;最后,还可以使用插件方式,自动推送方式给百度提交数据

 

1.3  网页抓取

1.3.1  访问速度

关于移动页面的访问速度,百度搜索资源平台已于2017年10月推出过闪电算法,针对页面首页的打开速度给予策略支持。闪电算法中指出,移动搜索页面首屏加载时间将影响搜索排名。移动网页首屏加载时间在2秒之内的,在移动搜索下将获得提升页面评价优待,获得流量倾斜;同时,在移动搜索页面首屏加载非常慢(3秒及以上)的网页将会被打压。

对于页面访问速度的提速,这里也给到几点建议:

资源加载:

√ 将同类型资源在服务器端压缩合并,减少网络请求次数和资源体积。

√ 引用通用资源,充分利用浏览器缓存。

√ 使用CDN加速,将用户的请求定向到最合适的缓存服务器上。

√ 非首屏图片类加载,将网络带宽留给首屏请求。

页面渲染:

√ 将CSS样式写在头部样式表中,减少由CSS文件网络请求造成的渲染阻塞。

√ 将JavaScript放到文档末尾,或使用异步方式加载,避免JS执行阻塞渲染。

√ 对非文字元素(如图片,视频)指定宽高,避免浏览器重排重绘。

希望广大站长持续关注页面加载速度体验,视网站自身情况,参照建议自行优化页面,或使用通用的加速解决方案(如MIP),不断优化页面首屏加载时间。

 

1.3.2  返回码

HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码。各位站长在平时维护网站过程中,可能会在站长工具后台抓取异常里面或者服务器日志里看到各种各样的响应状态码,有些甚至会影响网站的SEO效果,例如重点强调网页404设置,百度搜索资源平台(原百度站长平台)中部分工具如死链提交,需要网站把内容死链后进行提交,这里要求设置必须是404。

下面为大家整理了一些常见的HTTP状态码:

301:(永久移动)请求的网页已被永久移动到新位置。服务器返回此响应(作为对GET或HEAD请求的响应)时,会自动将请求者转到新位置。

302:(临时移动)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。

这里强调301与302的区别:

301/302的关键区别在于:这个资源是否存在/有效

301指资源还在,只是换了一个位置,返回的是新位置的内容。

302指资源暂时失效,返回的是一个临时的代替页(例如镜像资源、首页、404页面)上。注意如果永久失效应当使用404。

有时站长认为百度对302不友好,可能是误用了302处理仍然有效的资源。

400:(错误请求)服务器不理解请求的语法。

403:(已禁止)服务器已经理解请求,但是拒绝执行它。

404:(未找到)服务器找不到请求的网页。

这里不得不提的一点,很多站长想自定义404页面,需要做到确保蜘蛛访问时返回状态码为404,若因为404页面跳转时设置不当,返回了200状态码,则容易被搜索引擎认为网站上出现了大量重复页面,从而对网站评价造成影响。

500:(服务器内部错误)服务器遇到错误,无法完成请求。

502:(错误网关)服务器作为网关或代理,从上游服务器收到了无效的响应。

503:(服务不可用)目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。

504:(网关超时)服务器作为网关或代理,未及时从上游服务器接收请求。

 

1.3.3  robots

robots工具的详细工具使用说明,细节参考4.3.4robots工具章节,关于robots的使用,仅强调以下两点:

√ 百度蜘蛛目前在robots里是不支持中文的,故网站robots文件编写不建议使用中文字符

√ robots文件支持UrlEncode编码这种写法,如http://www.test.cn/%E7%89%B9%E6%AE%8A:%E6%B5%8F%E8%A7%88/%E7%94%9F%E6%AD%BB%E7%8B%99%E5%87%BB:%E7%99%BD%E9%93%B6%E5%8A%A0%E7%89%B9%E6%9E%97

1.3.4  死链

当网站死链数据累积过多,并且被展示到搜索结果页中,对网站本身的访问体验和用户转化都起到了负面影响。另一方面,百度检查死链的流程也会为网站带来额外负担,影响网站其他正常页面的抓取和索引。

百度搜索资源平台推出死链提交工具,帮助网站提交死链数据,死链提交工具使用参考4.3.2死链提交工具。

什么是死链及死链的标准

页面已经无效,无法对用户提供任何有价值信息的页面就是死链接,比较常见死链形式共有3种,协议死链和内容死链是比较常见两种形式,除此之外还有跳转死链。

√ 协议死链:页面的TCP协议状态/HTTP协议状态明确表示的死链,常见的如404、403、503状态等。

√ 内容死链:服务器返回状态是正常的,但内容已经变更为不存在、已删除或需要权限等与原内容无关的信息页面。

√ 跳转死链:指页面内容已经失效,跳转到报错页,首页等行为。

 

1.4  访问稳定性

访问稳定性主要有以下几个注意点:

DNS解析

DNS是域名解析服务器,关于DNS,这里建议中文网站尽可能使用国内大型服务商提供的DNS服务,以保证站点的稳定解析。

分享一个DNS稳定性的示例:

搜索资源平台曾收到多个站长反馈,称网站从百度网页搜索消失,site发现网站数据为0。

经追查发现这些网站都使用国外某品牌的DNS服务器 *.DOMAINCONTROL.COM,此系列DNS服务器存在稳定性问题,百度蜘蛛经常解析不到IP,在百度蜘蛛看来,网站是死站点。此前也发现过多起小DNS服务商屏蔽百度蜘蛛解析请求或者国外DNS服务器不稳定的案例。因此这里建议网站,谨慎选择DNS服务。

蜘蛛封禁

针对爬虫的封禁会导致爬虫认为网站不可正常访问,进而采取对应的措施。爬虫封禁其实分两种,一种就是传统的robots封禁,另一种是需要技术人员配合的IP封禁和UA封禁;而绝大多数情况下的封禁都是一些操作不当导致的误封禁,然后在搜索引擎上的反应就是爬虫不能正常访问。所以针对爬虫封禁的操作一定要慎重,即使因为访问压力问题要临时封禁,也要尽快做恢复处理。

服务器负载

抛开服务器硬件问题(不可避免),绝大多数引起服务器负载过高的情况是软件程序引起的,如程序有内存泄露,程序出core,不合理混布服务(其中一个服务消耗服务器资源过大引起服务器负载增大,影响了服务器对爬虫访问请求的响应。)对于提供服务的机器一定要注意服务器的负载,留足够的buffer保证服务器具有一定的抗压能力。

其他人为因素

人为操作不当引起访问异常的情况是经常见到的,针对这种情况需要严格的制度约束,不同站点情况不一样。需要保证每一次的升级或者操作要准确无误。

 

1.5  可访问链接总量

1.5.1  资源可穷尽

一般来说网站的内容页面是可穷尽的,万级别,百万级别甚至亿级别,但一定是可穷尽的。而现实中确实存在这样一些网站,爬虫针对这些网站进行抓取提链时会陷入"链接黑洞";通俗的讲就是网站给爬虫呈现的链接不可穷尽;典型的是部分网站的搜索结果页,不同的query在不同anchor下的a标签链接不一样就导致了"链接黑洞"的产生,所以严禁URL的生成跟用户的访问行为或者搜索词等因素绑定。