大家都知道,查看网站日志是了解蜘蛛的唯一途径,现在网上也有很多的工具可以辅助我们进行日志的分析,但令人失望的是,大部分好用的工具都是收费的,做站长的整日辛辛苦苦的赚点钱也不容易,哪有闲钱去买这些东西,无奈只能用免费的了,而免费的东西不是功能单一、操作上有限制,就是工具太大、耗费系统资源太多。
面对这种情况,我们要怎么才能对网站的日志进行透彻的分析呢?总不能一行一行的来读吧!或者自己动手开发一个怎么样?你也认为这个注意好,是吧!那就让我们自己动手来开发一款可以一键分析蜘蛛行为的、史上最强网站日志分析器。
我们先来看一段网站日志代码:
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”,然后再更改相应的输出文字即可。
