網站日誌分析器:一鍵分析蜘蛛行為

大家都知道,查看網站日誌是瞭解蜘蛛的唯一途徑,現在網上也有很多的工具可以輔助我們進行日誌的分析,但令人失望的是,大部分好用的工具都是收費的,做站長的整日辛辛苦苦的賺點錢也不容易,哪有閒錢去買這些東西,無奈只能用免費的了,而免費的東西不是功能單一、操作上有限制,就是工具太大、耗費系統資源太多。   

面對這種情況,我們要怎麼才能對網站的日誌進行透徹的分析呢?總不能一行一行的來讀吧!或者自己動手開發一個怎麼樣?你也認為這個注意好,是吧!那就讓我們自己動手來開發一款可以一鍵分析蜘蛛行為的、史上最強網站日誌分析器。

我們先來看一段網站日誌代碼:

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”,然後再更改相應的輸出文字即可。