这篇博客里面的内容全部吸收的话,日志分析这一块就能按照你能想到的维度来分析了。当然任何好事都需要付出才能得到,想要吸收所有内容,必须学习shell这门脚本语言的一小部分命令符的使用,当然学一门语言的一小部分内容是个很简单的事情哈。市面上那些的日志分析工具都是个摆设,包括光年的那个。我们可以按照各种我们想到的维度对数据进行拆分组合。得出我们想要的结果,并不止在SEO领域,其他在运营等各个领域都有用处。
1、在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法:Cygwin安装详解,快速安装所有插件,无需联网。
2、下面笔者粗略介绍下SEO日志分析常用的命令符用法,需要详细了解每个命令符请使用Google
- less log.log 查看文件内容 按“q” 退出
- cat log.log 打开文件,可以多次打开几个文件 | cat 1.log 2.log |cat *.cat
- grep -参数 文件名
- -i 不区分大小写
- -v 显示不符合条件的所有行
- -c 显示符合条件的所有行数(符合条件的数量)
- egrep 属于grep的升级版,在正则这一块的支持更完善,使用正则的时候建议使用egrep
- head -2 显示2行
- head -100 log.log | tail -10 >>a.log 提取文件第91-100行数据
- wc -参数 文件名 统计文本大小,字符多少,行数
- -c 统计文本字节数
- -m 统计文本字符数
- -l 统计文本有多少行
- sort – 参数 文件名 对文件进行排序
- -n 对文件按照数字排序
- -r 反向排序
- uniq -参数 对文件去重,去重前需要使用排序sort
- -c 显示数据重复的次数
- split -参数 文件名 对文件进行切割
- -100 (每100行切割成一个文件)
- -C 25m/b/k (每25兆/字节/K 分割成一个文件)
- | 管道,把上一条命令的结果传输给下一条命令
- “>” 和“>> ” 重定向写入文件中 “>”相当于“w”清空并写入 “>>”相当于“a” 追加进文件
- awk -F Pattern {action} 文件名 使用指定的字符对每一行数据进行分段,默认是空格(网站日志就是空格分开)
- -F后面跟的是分隔符
- pattern 就是action执行的条件,这里可以使用正则表达式
- $n 即时第几段数据 $0表示整行数据
- NF表示当前记录的字段数
- $NF 表示最后一个字段
- BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作
- 案例:$ awk ‘{print $10}’ baidu.log |awk ‘BEGIN{total=0}{total+=$1}END{print total}’ 计算baiduspider下载文件总大小
- bash shell.sh 运行shell.sh脚本
- nslookup ip 查询地址是否是百度蜘蛛
- dos2unix xxoo.sh 将“\r\n”转换成“\n” Windows——>linux (由于Windows和Linux下的换行符不同,所以我们在Windows下面下的代码需要使用dos2unix 转换成Linux下的换行符,否则运行shell脚本会报错)
- unix2dos xxoo.sh 将“\n”转换成“\r\n” linux——>Windows
- rm xx.txt 删除xx.txt文件
3、一些简单的命令符介绍到这里,需要了解shell,建议大家查看相关的书籍,下面我们开始使用shell分析日志。
日志格式如下:
less baidu.log
1、切割百度的抓取数据(将文件切割出来对专门的蜘蛛进行处理能提高效率)
cat log.log |grep -i ‘baiduspider’ >baidu.log
2、网站状态码个数查询(隐藏的是状态码个数)
awk ‘{print $9}’ baidu.log|sort|uniq -c|sort -nr
3、百度总抓取量
wc -l baidu.log
4、百度不重复抓取量
awk ‘{print $7}’ baidu.log|sort|uniq|wc -l
5、百度平均每次抓取的数据大小(结果是KB)
awk ‘{print $10}’ baidu.log|awk ‘BEGIN{a=0}{a+=$1}END{ print a/NR/1024}’
6、首页抓取量
awk ‘$7~/\.com\/$/’ baidu.log|wc -l
7、某目录抓取量
grep ‘/news/’ baidu.log|wc -l
8、抓取最多的10个页面
awk ‘{print $7}’ baidu.log|sort|uniq -c|sort -nr|head -10
9、找出抓取的404页面
awk ‘$9~ /^404$/ {print $7}’ baidu.log|sort|uniq|sort -nr
10、找出抓取了多少js文件和文件抓取的次数(可以看出百度基本不抓JS)
awk ‘$7~ /.js$/ {print $7}’ baidu.log|sort|uniq -c |sort -nr
相信看到这里大家已经有了想试一把手的冲动了,只要你搞懂了上述的内容,上面的操作都可以轻而易举的完成,没有任何困难,还可以有更多的维度进行分析,不仅仅是SEO领域。只要你敢想,就能挖掘更多的数据出来(当然更复杂的纬度可能需要学习shell更多的内容哟,当然,以我的努力程度之低都能做到的事情,大家应该都不是问题)