网站日志分析,统计爬虫数量的shell命令

标签:   

有时需要分析网站日志文件,统计诸如爬虫数量的需求,但大文件直接下载在编辑器中打开太卡。

以下用shell命令进行分析

以下假设日志文件名为:eyunzhu.com-access_log

统计谷歌爬虫数量的方法

#在网站日志目录下执行命令:
#统计谷歌爬虫数量的方法
cat eyunzhu.com-access_log | grep 'Googlebot'  | wc -l

将日志中所有IP去重复后保存到文件

# 匹配ip地址 排序后去重复 输出到文件ip_uniq.txt
# uniq只能检测到邻近的重复行,所以我们要先进行排序,然后再查找重复行
cat eyunzhu.com-access_log | egrep -o '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' | sort | uniq -d > ip_uniq.txt

统计所有请求情况包含百度蜘蛛、谷歌蜘蛛、必应蜘蛛等及各自所占比例

# 整体命令如下:
logfile=eyunzhu.com-access_log \
allRequest=`cat $logfile | wc -l`; \
apiRequest=`cat $logfile | grep '/aso'| wc -l`; \
baidu=`cat $logfile | grep 'baidu.com/search/spider'  | wc -l`; \
Google=`cat $logfile | grep 'Googlebot'  | wc -l`; \
Sogou=`cat $logfile | grep 'Sogou web spider'  | wc -l`; \
bing=`cat $logfile | grep 'bing.com/bingbot'  | wc -l`; \
semrush=`cat $logfile | grep 'semrush.com/bot'  | wc -l`; \
ahrefs=`cat $logfile | grep 'ahrefs.com/robot'  | wc -l`; \
Yisou=`cat $logfile | grep 'YisouSpider'  | wc -l`; \
Yandex=`cat $logfile | grep 'YandexWebmaster'  | wc -l`; \
DuckDuckGo=`cat $logfile | grep 'DuckDuckGo'  | wc -l`; \
totalSpider=$((baidu+Google+Sogou+bing+semrush+ahrefs+Yisou+Yandex+DuckDuckGo));\
otherRequest=$(($allRequest - $apiRequest - $totalSpider));\
echo -e "#####\r\nbaidu:$baidu\r\n\
Google:$Google\r\nSogou:$Sogou\r\nbing:$bing\r\nsemrush:$semrush\r\n\
ahrefs:$ahrefs\r\nYisou:$Yisou\r\nYandex:$Yandex\r\n\
DuckDuckGo:$DuckDuckGo\r\n\r\n\
总请求数:$allRequest\r\n\
api接口请求:$apiRequest `awk 'BEGIN{printf "%.3f%%\n",('$apiRequest'/'$allRequest')*100}'` \r\n\
爬虫请求数:$totalSpider `awk 'BEGIN{printf "%.3f%%\n",('$totalSpider'/'$allRequest')*100}'`\r\n\
其他请求数:$otherRequest `awk 'BEGIN{printf "%.3f%%\n",('$otherRequest'/'$allRequest')*100}'`\r\n\
\r\n#####\r\n"

执行结果如下:

网站日志爬虫数量分析


发表评论 登录

目前评论:0