工具篇13:蜘蛛爬行分析策略
来源: 互联网   发布时间: 2015-04-05 19:10   432 次浏览   大小:  16px  14px  12px
工具篇13:蜘蛛爬行分析策略

大家都知道,查看网站日誌是瞭解蜘蛛的唯一途径,现在网上也有很多的工具可以辅助我们进行日誌的分析,但令人失望的是,大部分好用的工具都是收费的,做站长的整日辛辛苦苦的赚点钱也不容易,哪有閒钱去买这些东西,无奈只能用免费的了,而免费的东西不是功能单一、操作上有限制,就是工具太大、耗费系统资源太多。

面对这种情况,我们要怎么才能对网站的日誌进行透彻的分析呢?总不能一行一行的来读吧!或者自己动手开发一个怎么样?你也认为这个注意好,是吧!那就让我们自己动手来开发一款可以一键分析蜘蛛行为的、史上最强网站日誌分析器。

我们先来看一段网站日誌代码:

220.181.7.104 - - [20/Oct/2010:06:00:06 +0800] "GET /robots.txt HTTP/1.1" 200 767 "-" "Baiduspider+

(+http://www.baidu.com/search/spider.htm)"

开发之前,我们来想一想,我们都需要哪些功能?如果我们以百度蜘蛛为例,我们无非是想知道:

1、百度蜘蛛一天来我们的网站的次数(因为我们都希望越多越好)。

2、百度蜘蛛都是什么时间来的?(知道这个就可以在百度蜘蛛来的时候更新文章,这样可以增加收录数量,减少 收录时间)

3、百度蜘蛛都抓取了哪些页面?相应的http状态码是多少?(根据状态码我们可以判断网站被抓取的情况)

通过分析,我们可以确定开发的目标了,我们要统计蜘蛛爬取次数、爬取时间、爬取的页面和相应的状态码。

下面我们以这一小段测试日誌代码为例:

220.181.7.104 - - [20/Oct/2010:06:00:06 +0800] "GET /robots.txt HTTP/1.1" 200 767 "-" "Baiduspider+

(+http://www.baidu.com/search/spider.htm)"

66.249.69.244 - - [20/Oct/2010:06:03:23 +0800] "GET /hao123/category/1/%E6%B7%B1%E5%9C%B3%E5%8C%97%E5%A4%A7%E9%9D%92%E9%B8%9F%E6%A0%A1%E5%8C%BA.html HTTP/1.1" 200 56114 "-" "Mozilla/5.0             (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

我这里採用的方法是运用批次处理的方式,提取出日誌档中所有的百度蜘蛛所在的行,输出到指定的档中,然后在统计出时间、次数、爬取的页面和http状态码。具体代码如下:

@echo off

for /r %%i in (*.log) do find /i "Baiduspider" %%i > baidu.txt rem 查找目录下的log档中的“Baiduspider”所在的行,并将其写入到baidu.txt文件

for /f "tokens=4" %%y in (baidu.txt) do @echo %%y >> zhizhu.txt rem 以空格为分隔符号,提取baidu.txt档中每行的第四段,并将其写入到zhizhu.txt档(第四段就是蜘蛛爬取的时间)

for /f "tokens=1 delims=:" %%i in ('findstr /n .* zhizhu.txt') do set num=%%i

rem 统计蜘蛛爬取的次数

echo ------------------------------------------------------------------

>> zhizhu.txt

rem 输出分割线---------------

echo 百度蜘蛛共来过%num%次,根据蜘蛛来的时间规律发佈文章,可以增加收录哦!>> zhizhu.txt

rem 输出文字

echo ------------------------------------------------------------------ >> zhizhu.txt rem 输出分割线----------

echo 接下来再看看百度蜘蛛抓取了哪些页面吧! >> zhizhu.txt

rem 输出文字

echo ------------------------------------------------------------------ >> zhizhu.txt

rem 输出分割线----------

for /f "skip=1 tokens=6,7,9,10" %%a in (baidu.txt) do @echo %%a %%b %%c %%d >> zhizhu.txt

rem 以空格为分隔符号,提取baidu.txt文件中每行的第6、7、9、10段,并将其写入到zhizhu.txt档(第6、7、9、10段就是蜘蛛爬取的页面和相应的http状态码)

echo %date% > time.txt

rem 提取系统日期,写入到time.txt文件

for /f "tokens=1" %%e in (time.txt) do ren zhizhu.txt %%e-百度蜘蛛统计.txt rem 将zhizhu.txt档更名为“系统时间-百度蜘蛛统计.txt”为名的档,方便存档

del /f /q baidu.txt

rem 删除暂存档案baidu.txt

del /f /q time.txt

rem 删除暂存档案time.txt

使用方法非常的简单,将上面的代码复製、粘贴到文字档案中,将文字档案另存为尾码名为.bat的批次档案,然后将你要进行分析的网站日誌档和批次档案放到同一个目录下,双击批次档案,稍等一会,在目录下会生成一个“系统时间-百度蜘蛛统计.txt”的档,这个档放的就是所有的统计结果,格式如下:

[20/Oct/2010:06:00:06

[20/Oct/2010:08:10:58

[20/Oct/2010:08:10:59

[20/Oct/2010:09:06:22

[20/Oct/2010:09:14:38

[20/Oct/2010:10:59:19

[20/Oct/2010:12:26:41

[20/Oct/2010:12:27:09

[20/Oct/2010:12:38:58

[20/Oct/2010:12:47:19

[20/Oct/2010:12:49:53

[20/Oct/2010:14:17:31

[20/Oct/2010:15:36:52

[20/Oct/2010:17:17:34

[20/Oct/2010:17:17:35

------------------------------------------------------------------

百度蜘蛛共来过15次,根据蜘蛛来的时间规律发佈文章,可以增加收录哦!

------------------------------------------------------------------

接下来再看看百度蜘蛛抓取了哪些页面吧!

------------------------------------------------------------------

"GET /robots.txt 200 767 "GET /diannaopeixun/gaoji-diannaopeixun/page/3/ 301 -

"GET /diannaopeixun/gaoji-diannaopeixun/page/3 200 27988

"GET / 200 50348 "GET / 200 50442 "GET /robots.txt 200 767

"GET / 200 50455 "GET / 200 50524 "GET / 200 50465

"GET / 200 50470 "GET / 200 50634

"GET /hao123/sitemap/\xe5\x8c\x97/zh.html 200 149111

"GET /tag/ie\xe7\xaa\x97\xe5\x8f\xa3 200 24508

"GET /diannaopeixun/chuji-diannaopeixun/page/4/ 301 -

"GET /diannaopeixun/chuji-diannaopeixun/page/4 200 25256

到此我们就完成了可以一键分析蜘蛛行为的史上最强网站日誌分析器的製作,不但简单实用,而且功能强大,不需安装,也永远不用付费,是站长分析网站日誌的终极利器。

备註说明:上面的代码是按照康盛世纪的伺服器中产生的网站日誌格式编写的,由于不同伺服器产生的日誌格式可能不同,代码可以按照实际情况进行修改,代码中以rem开头的行,是对上一行代码的注释。

如果网站日誌太大,可以将上面的代码分成两个档来执行,一个档的作用是统计时间和次数,另一个档是统计抓取页面和相应的http状态码。如果想统计google蜘蛛,只需将上面代码中的“Baiduspider”改为“Googlebot”,然后再更改相应的输出文字即可。


分享按钮
 
需要课程请咨询
 
QQ  在线客服
Power by 建站之星 | 美橙互联 版权所有