0

使用shell分析爬虫日志

已有 207 阅读此文人 - - SEO方法 -

科学的SEO,一定是有数据量来支持的。之前火虫苦于对python,php可以说是一窍不通。很多事情都只能用excel来解决。慢,卡,繁琐。今年开始,搭建linux,开始尝试用shell,python来处理数据。工欲善其事必先利其器,今天开始使用后发现真是方便。下面转载自ITSEO。

很多地方分享了日志分析的shell脚本,但是基本没说每个命令符的具体含义,学习成本还是很高,在这里总结下,方便大家快速入门。
1、在Windows下的用户要使用shell命令符的话请先安装cygwin,安装方法自行Google(搜技术问题请使用google,百度搜不到活该)     ===================================
     更新:Cygwin安装详解,快速安装所有插件,无需联网。

2、下面粗略介绍下SEO日志分析常用的命令符用法,需要详细了解每个命令符请使用Google。

  • less  文件名       查看文件内容  按“q” 退出
  • cat  文件名      打开文件,可以多次打开几个文件 |     cat 1.log 2.log   |cat *.cat
  • grep -参数  文件名
  • egrep 属于grep的升级版,在正则这一块的支持更完善,使用正则的时候建议使用egrep
  • head -2  文件名 显示2行
  • head -100  文件名  | tail -10 >>a.log   提取文件第91-100行数据
  • wc -参数   文件名      统计文本大小,字符多少,行数
  • sort  – 参数 文件名      对文件进行排序
  • uniq -参数     文件名    对文件去重,去重前需要使用排序sort
  • split  -参数  文件名       对文件进行切割
  • |    管道,把上一条命令的结果传输给下一条命令
  • “>” 和“>> ” 重定向写入文件中 “>”相当于“w”清空并写入   “>>”相当于“a” 追加进文件
  • awk -F  ‘分割符’  Pattern {action}  文件名     使用指定的字符对每一行数据进行分段,默认是空格(网站日志就是空格分开)
  • bash shell.sh   运行shell.sh脚本
  • 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 log.log

1、切割百度的抓取数据(将文件切割出来对专门的爬虫数据进行处理能提高效率)

  1. cat log.log |grep -i ‘baiduspider’ >baidu.log

复制代码

2、网站状态码个数查询

  1. awk ‘{print $9}’  baidu.log|sort|uniq -c|sort -nr

复制代码

3、百度总抓取量

  1. wc -l baidu.log

复制代码

4、百度不重复抓取量

  1. awk ‘{print $7}’      baidu.log|sort|uniq|wc -l

复制代码

5、百度平均每次抓取的数据大小(结果是KB)

  1. awk ‘{print $10}’   baidu.log|awk ‘BEGIN{a=0}{a+=$1}END{ print a/NR/1024}’

复制代码

6、首页抓取量

  1. awk ‘$7~/\.com\/$/’   baidu.log|wc -l

复制代码

7、某目录抓取量

  1. grep   ‘/news/’   baidu.log|wc -l

复制代码

8、抓取最多的10个页面

  1. awk ‘{print $7}’ baidu.log|sort|uniq -c|sort -nr|head -10

复制代码

9、找出抓取的404页面

  1. awk ‘$9~ /^404$/ {print $7}’ baidu.log|sort|uniq|sort -nr

复制代码

10、找出抓取了多少js文件和文件抓取的次数

  1. awk ‘$7~ /.js$/ {print $7}’ baidu.log|sort|uniq -c  |sort -nr

复制代码

期待你一针见血的评论,Come on!