2021年SEO了解网络爬虫提升优化技巧

  网络爬虫的遍历策略:
                                                                                       
  1.深度优先遍历

  深度优先遍历是一头扎到底的玩法。我们选择一条支路,尽可能不断地深入,如果遇到死路就往回退,回退过程中如果遇到没探索过的支路,就进入该支路继续深入。如下图,其深度优先遍历顺序为 1->2->4->8->5->3->6->7

  也因此容易使爬虫陷入黑洞。所以最常用的还是广度优先遍历和最佳优先遍历。

  2.广度优先遍历

  广度优先遍历是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。通常是很多爬虫并行处理。如下图,其广度优先算法的遍历顺序为:1->2->3->4->5->6->7->8

  广度优先遍历在一定情况下其实也会进入到深度优先遍历的黑洞,但是网络中大量的网页,爬取页面又是一件耗时耗力的事情,需要网络带宽、中央处理器和磁盘。所以爬虫做事也要有个轻重缓急,我们来看最佳优先遍历

  3.最佳优先遍历

  最佳优先遍历是保证在有限带宽的条件下,尽可能照顾到重要性高的网页。如何实现呢?

  最简单的方式就是使用优先队列来实现Todo表。这样,每次选出来扩展的URL就是具有高重要性的网页,在优先队列中,优先级高的元素先出队列。对于已经加入到Todo表的不再会进行剔除。

  说完遍历策略,为了处理速度更快,爬虫也会对工作进行细分分配,我们再来看看爬虫架构。

  1.物理分布爬虫结构。举个例子,就是北京的爬虫爬取北京的网站,上海的爬虫爬取上海的。电信的爬取托管在电信的网站,联通的爬取联通的。

  2.垂直分布爬虫结构。

  (1)按域名开头字母分配爬虫。比如,一台机器专门爬取c开头的网站,比如https://www.chain.com。https://www.ceo.com等等。另一台机器专门爬取w开头的网站。如果抓c的抓到了w开头的,就把他交还给专门抓取w来头的爬虫机器。

  (2)抓取指定网站的新闻或论坛等信息。通过首页,列表页,抓取详情页的有效信息进入数据库。我们自己用的采集就属于这种。

  不管是遍历策略还是爬虫架构,最终的目的都是要从庞大的互联网上获取新增信息,我们再来说说网页更新。

  关于更新网页内容的基本原理是这么定义的:

  下载网页时,记录网页下载时的时间;增量采集时,判断URL地址对应的网页是否有更新。

  对于不同类型的网站采用不同的更新策略。一般爬虫认为.com域名的更新频率高,.gov域名的更新频率低。对于一些不太可能会更新的网页,只抓取一遍即可。但有些网页,更新频率高,就会隔一段时间检测这些网页是否更新。

  面对庞大的网页,最早我们知道像百度,谷歌会通过一些分类目录,黄页来找到URL,现在这些的作用在下降,我们可以通过百度站长工具中的链接提交或者其他高质量外链的方式,让爬虫找到我们。

  了解完爬虫,对于一个网站来说,光有好内容还不行,我们得让这些好内容被找到,确保网站可抓取。

  1.robots.txt。首先要检查robots.txt文件,这个文件是任何网络爬行软件到达站点时的第一个调用点。

  不该禁止的就不要禁止。

  2.服务器。保证服务器稳定。2015年开始百度就对服务器稳定性的权值做了很大提升。服务器越稳定加载速度越快,百度蜘蛛抓取就越通畅。

  3.内容更新。保持网站有规律更新,给爬虫提供新内容。

  4.了解蜘蛛IP。对于爬虫的来访情况,我们可以通过分析网站日志来进行。网站日志的扩展名是.log,下面是一段网站日志的样式。

  112.10.94.234 - - [22/Apr/202014:01:26 +0800] “GET /item/detail.mooc?a=1&b=2&c=5 HTTP/1.1” 200 2582 “http://www.chinacma.org/cma/10889.html” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebkit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8”

  在这段网站日志中,

  (1)112.10.94.234 代表蜘蛛IP(其他蜘蛛IP代表含义详见下文:附文1:)

  (2)[22/Apr/202014:01:26 +0800]   爬虫爬取的时间

  (3)GET /item/detail.mooc?a=1&b=2&c=5 HTTP/1.1”   是请求方法为GET方法,请求协议为HTTP,协议的版本为1.1

  在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。

  GET - 从指定的资源请求数据。

  POST - 向指定的资源提交要被处理的数据

  (4)200 25826 “http://www.chinacma.org/cma/10889.html”200表示网页正常访问成功,25826是该网址网页的大小,单位应该是byte

  关于http状态码,常见的是200和404,还有一些其他的状态码,具体代表含义见文章末尾附文2:http状态码

  下面这段日志代表的是什么呢?

  (5)“Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebkit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8”

  我们了解一个知识点【什么是UA】?


  User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。(百度百科定义)

  标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息

  “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebkit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8”

  Mozilla/5.0 是浏览器

  Macintosh  是操作系统 Macintosh,简称Mac,就是苹果电脑系统  Intel 是处理器   Mac OS X 10_12_6  代表苹果系统版本

  (6)AppleWebkit/603.3.8 (KHTML, like Gecko)则表示渲染引擎标识。它负责取得网页的内容(HTML、XML、图象等等)、整理信息(例如加入 CSS 等),以及计算网页的显示方式然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要页面渲染引擎。

  AppleWebkit是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。

  WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。Apple开发了Safari浏览器引擎之后,使用了KHTML,同时也增加了很多新特性,后来另起炉灶叫了WebKit,但是它又希望能够看到那些为KHTML编写的网页,于是Safari标称自己为Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

  关于这块比较详细的知识参考:

  webkit:https://baike.baidu.com/item/webkit

  排版引擎:https://baike.baidu.com/item/%E6%8E%92%E7%89%88%E5%BC%95%E6%93%8E/8371898?fromtitle=gecko&fromid=7348782

  关于浏览器内核,khtml,Gecko,applewebkit和safari:http://blog.sina.com.cn/s/blog_702183da0102welk.html

  关于UA,百度站长给了如何正确识别Baiduspider的建议:

  移动 UA

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

  PC UA

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

  手机百度UA

  Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 likeMac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Mobile/14A456baiduboxapp/0_0.5.2.8_enohpi_4331_057/2.0.01_2C2%2

  57enohPi/1099a/804F3530265F63292098DF3741E4B6272CFA77AE4FCIJOOERTE/1

  附文1:

  下面是百度蜘蛛的一些IP所代表的不同含义,当然还有其他蜘蛛IP,大家根据需要可以做具体分析。

  下面的百度蜘蛛IP造访,准备抓取你东西,抓取网页的百度蜘蛛。

  60.172.229.61

  61.129.45.72

  61.135.162.*

  百度竞价蜘蛛

  61.135.165.134

  117.34.74.66

  118.122.188.194

  119.63.196.9

  125.39.78.185

  (百度联盟爬虫),说白了就是百度统计。

  61.135.186.*

  站长工具模仿的百度蜘蛛。

  61.147.98.146

  61.188.39.16

  113.98.254.245

  117.21.220.245

  117.28.255.42

  114站长工具箱(这个是你的网站不稳定时常来的)

  119.147.114.213

  121.10.141.*

  百度图片爬虫

  123.15.**.**

  这个蜘蛛经常来,别的来的少,表示网站可能要进入沙盒了,或被者降权。

  123.125.68.*

  抓取内页收录的,权重较低,爬过此段的内页文章暂时被收录但不放出来(意思也就是说待定),因不是原创或采集文章。(百度网页爬虫(百度图片爬虫)

  123.125.71.*

  搜外站长工具蜘蛛。

  124.248.34.52

  也属于百度蜘蛛IP 主要造成成分,是新上线站较多,还有使用过站长工具,或SEO综合检测造成的,没有多大用。 125.90.88.*

  百度蜘蛛

  159.226.50.*

  180.76.5.*

  180.76.5.87

  220.181.158.107

  伪装百度蜘蛛IP

  180.149.130.*

  这个ip段出现在新站及站点有不正常现象后。

  183.91.40.144

  203.208.60.*

  这个ip段不间断巡逻各站,就是路过一下。

  210.72.225.*

  每天这个IP段只增不减很有可能进沙盒或K站

  218.30.118.102

  220.181.68.*

  123.125.68.*

  220.181.68.*

  主要是抓取首页占80%,内页占30%,这此爬过的文章或首页,绝对24小时内放出来和隔夜快照的!一般成功抓取返回代码都是 200 0 0返回304 0 0代表网站没更新,蜘蛛来过,如果是 200 0 64别担心这不是K站,可能是网站是动态的,所以返回就是这个代码。

  220.181.108.*

  代表百度蜘蛛IP来访准备抓取你东西

  220.181.7.*

  123.125.66.*

  这个ip段作为度过新站考察期

  121.14.89.*

  这个ip段出现在新站或站点有不正常现象后

  203.208..60.*

  这个ip段不间断巡逻各站

  210.72.225.*

  这个是百度抓取首页的专用IP如是220.181.108段的ip来的话基本来说网站会天天隔夜快照,绝对错不了的

  220.181.108.95

  98%抓取首页可能还会抓取其他「不是指内页)属于权重IP段此段爬过的文章或首页基本24小时放出来.

  220.181.108.92

  抓取内页收录的 权重较低 爬过此段的内页文章不会很快放出来,因不是原创或采集文章

  123.125.71.106

  属于综合的。主要抓取首页和内页或者其它页面。属于权重IP段, 抓过的文章或首页基本24小时放出来

  220.181.108.91

  重点抓取更新文章的内页达到90%,8%的抓取首页,2%其他权重ip段,抓过的文章或首页基本24小时放出来

  220.181.108.75

  专用抓取首页ip 权重段,一般返回代码304 0 0代表未更新

  220.181.108.86

  抓取内页收录的,权重较低,爬过此段的内页文章不会很快放出来,因不是原创

  123.125.71.95

  123.125.71.97

  专用抓取首页ip 权重段,一般返回代码304 0 0代表未更新

  220.181.108.89

  220.181.108.94

  220.181.108.97

  220.181.108.80

  220.181.108.77

  抓取内页收录的, 权重较低,爬过此段的内页文章不会很快放出来,因不是原创

  123.181.108.77

  专用抓取首页ip 权重段,一般返回代码304 0 0代表未更新

  220.181.108.83

  附文2:http状态码

  1开头的http状态码

  表示临时响应并需要请求者继续执行操作的状态代码。

  100   (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

  101   (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

  2开头的http状态码

  表示请求成功

  200     成功处理了请求,一般情况下都是返回此状态码;

  201     请求成功并且服务器创建了新的资源。

  202     接受请求但没创建资源;

  203     返回另一资源的请求;

  204     服务器成功处理了请求,但没有返回任何内容;

  205     服务器成功处理了请求,但没有返回任何内容;

  206     处理部分请求;

  3xx (重定向)

  重定向代码,也是常见的代码

  300   (多种选择)  针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。

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

  302   (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  303   (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

  304   (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

  305   (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

  307   (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  4开头的http状态码表示请求出错

  400    服务器不理解请求的语法。

  401   请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

  403   服务器拒绝请求。

  404   服务器找不到请求的网页。

  405   禁用请求中指定的方法。

  406   无法使用请求的内容特性响应请求的网页。

  407   此状态代码与 401类似,但指定请求者应当授权使用代理。

  408   服务器等候请求时发生超时。

  409   服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。

  410   如果请求的资源已永久删除,服务器就会返回此响应。

  411   服务器不接受不含有效内容长度标头字段的请求。

  412   服务器未满足请求者在请求中设置的其中一个前提条件。

  413   服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

  414   请求的 URI(通常为网址)过长,服务器无法处理。

  415   请求的格式不受请求页面的支持。

  416   如果页面无法提供请求的范围,则服务器会返回此状态代码。

  417   服务器未满足”期望”请求标头字段的要求。

  5开头状态码并不常见,但是我们应该知道

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

  501   (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

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

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

  504   (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。

  505   (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

  除非注明,否则均为SEO优化培训服务_零基础SEO培训指导【力力SEO】原创文章,转载必须以链接形式标明本文链接。
  本文由【力力SEO培训】整理链接:http://www.liliseo.com/article/757.html
发表评论

相关文章