Cygwin安装详解,快速安装所有插件,无需联网

前端时间的一篇文章中小型网站日志分析深入浅出之SEO实战,好几个人问我安装Cygwin的安装和插件安装相关问题,这里科普下,其实网上下载的安装软件里面有详细的安装过程解释,注意下就知道了。

Cygwin下载:

链接: http://pan.baidu.com/s/1c0iXM6G  密码: pgfo

安装详解:

1. 双击运行cyg_win_setup.exe 安装程序。

2.       单击【下一步】,到了如下图的界面,选择“Install from Local Diretory”

1 Cygwin安装详解,快速安装所有插件,无需联网

3.       继续【下一步】,如下图,填写安装路径

2 Cygwin安装详解,快速安装所有插件,无需联网

4.       再【下一步】,会选择安装包的目录,一般不用填写,默认解压的当前就是安装包的目录,如不是,请手动切换到解压的目录
3 Cygwin安装详解,快速安装所有插件,无需联网
5.       【下一步】选择要安装的插件,请选择【AllφInsatll】,鼠标点击红色部分,这样就可以实现无需联网,一次性安装所有插件的需求,           如果你的Cygwin版本不行,请安装我给的版本,并按照我上述安装流程来。

4 Cygwin安装详解,快速安装所有插件,无需联网

6.       【下一步】,开始安装,安装完成后,如下界面,有两个选项可选,分别为“创建桌面快捷方式”、“添加快捷方式到开始菜单”,建议全部选中,单击【完成】。
5 Cygwin安装详解,快速安装所有插件,无需联网

修改默认目录:

这一步根据个人需求来,不一定要改,Cygwin安装后默认会进入Cygwin虚拟目录,要是想让Cygwin一启动就进入某一指定的目录的话只要用文本编辑器打开Cygwin安装目录下home/user name/.bashrc文件(注:user name指你安装Cygwin的计算机用户名。如:‘hilatolo’),在文件末尾加入“cd 你要设置的默认路径”即可。例如若想让Cygwin 从f盘 shell 路径启动,在bashrc末尾加入“cd f:/shell”即可。

中小型网站日志分析深入浅出之SEO实战

这篇博客里面的内容全部吸收的话,日志分析这一块就能按照你能想到的维度来分析了。当然任何好事都需要付出才能得到,想要吸收所有内容,必须学习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 -参数  文件名
    1. -i 不区分大小写
    2. -v 显示不符合条件的所有行
    3. -c  显示符合条件的所有行数(符合条件的数量)
  • egrep 属于grep的升级版,在正则这一块的支持更完善,使用正则的时候建议使用egrep
  • head -2   显示2行
  • head -100  log.log  | tail -10 >>a.log   提取文件第91-100行数据
  • wc -参数   文件名      统计文本大小,字符多少,行数
    1. -c 统计文本字节数
    2. -m 统计文本字符数
    3. -l 统计文本有多少行
  • sort  – 参数 文件名      对文件进行排序
    1. -n 对文件按照数字排序
    2. -r 反向排序
  • uniq -参数      对文件去重,去重前需要使用排序sort
    1. -c  显示数据重复的次数
  • split  -参数  文件名       对文件进行切割
    1. -100   (每100行切割成一个文件)
    2. -C    25m/b/k   (每25兆/字节/K 分割成一个文件)
  • |    管道,把上一条命令的结果传输给下一条命令
  • “>” 和“>> ” 重定向写入文件中 “>”相当于“w”清空并写入   “>>”相当于“a” 追加进文件 
  • awk -F  Pattern {action}  文件名     使用指定的字符对每一行数据进行分段,默认是空格(网站日志就是空格分开)
    1. -F后面跟的是分隔符
    2. pattern 就是action执行的条件,这里可以使用正则表达式
    3. $n 即时第几段数据  $0表示整行数据
    4. NF表示当前记录的字段数
    5. $NF 表示最后一个字段
    6. BEGIN和END,这两者都可用于pattern中,提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作
    7. 案例:$ 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 中小型网站日志分析深入浅出之SEO实战

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更多的内容哟,当然,以我的努力程度之低都能做到的事情,大家应该都不是问题)。

python实现文件切割(支持txt ,csv等)

今天群里一基友需要做文件切割。顺手写了个python脚本。分享了。

 Python |  copy code |? 
01
#coding:utf-8
02
ysfile=open(r'ceshi.csv','r')   #file.txt是需要切割的文件。
03
qiege=3   #默认切割成3个文件,需要切割成多少个文件在这里修改。
04
readfiles=ysfile.readlines()
05
leng=len(readfiles)
06
leng=leng/qiege
07
i=0
08
x=1
09
qg=`x`+'.txt'
10
qiegefile=open(qg,'w')
11
for line in readfiles:
12
	try:
13
		print line[0:-1]	
14
		if i>leng:
15
			x+=1
16
			i=0
17
			qg=`x`+'.txt'
18
			qiegefile.close()
19
			qiegefile=open(qg,'w')
20
		i+=1
21
		qiegefile.writelines(line)
22
	except ValueError :
23
		pass
24
qiegefile.close()
25
 
26
 
27

使用python实现文件去重(一般性的文本处理)

在实际工作中经常会遇到很多重复的信息,需要我们做去重复处理,今天下午写了个python的脚本实现文件去重功能,这个脚本能够满足大部分非特定的需求,但是针对seo词库仍然无法满足需求,分享给大家(针对seo词库的去重请查看python实现seo词库去重脚本—定制版处理数据的速度一般,可以接受,测试了下,上个厕所的时间处理了600万行数据。

 Python |  copy code |? 
01
#coding:utf-8
02
ciku=open(r'all.csv','r')   #打开需要去重文件
03
xieci=open(r'quchong.csv','w')   #打开处理后存放的文件
04
cikus=ciku.readlines() 
05
list2 = {}.fromkeys(cikus).keys()     #列表去重方法,将列表数据当作字典的键写入字典,依据字典键不可重复的特性去重
06
i=1
07
for line in list2:
08
	if line[0]!=',':
09
		# print line[0:-1].decode('utf-8').encode('gbk')   #数据量太多,会出现编码报错。蛋疼
10
		print  u"写入第:"+`i`+u" 个"
11
		i+=1
12
		xieci.writelines(line)
13
xieci.close()

吐槽下各种技术交流上面都会出现的名词:大数据,云计算,物联网等

今天公司举报了个交流会,会议结束后发的一个说说:有些东西一直飘在云端的,看着美丽,却不是我们可以触摸的,那些能建起飞机触摸它的巨头,才有资格去触摸,我们能做的唯有关注,时刻准备着,到了落地的那一刻,能毫不慌张的去迎接它,迎接它所带来的时代。

现如今各种互联网大会,各种技术交流,各种公知微博博客上面,必然要提到大数据,云计算,物联网,穿戴式设备等等…感觉不提这些话题就被这个时代抛弃了(实际上是这些人觉得不说这些就装不了B了),各种技术的美好愿景,将来能做到怎样,大数据对用户的精确推送等等。抛出各种诱人的诱饵,让你充满期望,现在某些人为了投资,就用这些概念骗煤老板,房地产老板的投资嘛,然后乱折腾一气,钱花完了,拍拍屁股走人。

很想在微博上面屏蔽掉这些词语,对于我们这些人来说,这些词语,每天都会见到,已经变得审美疲劳,我们对这些基础的了解已经足够多,并不需要做更深入的了解,我们身边一定有更重要的课题需要我们攻破,网站流量遇到瓶颈了,该怎样提升?关键字长尾由于网站构架原因导致无法更好的布局,我们又改怎么办,这些才是现阶段最实际的。

很多技术离商业使用,离普及还有很远的距离,最后能不能商业化都是个问题,有些技术也仅仅就是个美好愿景而已。对于我们这些互联网从业者来说,对新兴技术的了解是必要的,如要深入的去探索,就要衡量我们所处的环境,是不是具备这个条件,如果你拿不到飞机的机票,你怎么触摸这些还处于云端的事物呢?做好现在,我们有更多更实际的领域需要探索,你说你探索大数据,你连什么数据分析都不懂,你就要玩精准推送了。这不是个笑话嘛。

话说回来,互联网是个日新月异的行业,我们谁都不能保证现在手里的技术能保证以后不会被淘汰,java、SEO、php、.net也许某天都会被淘汰,不应该说也许,是肯定会被淘汰,对我们这些从业者的考验是能不能适应互联网的发展,适时学习攻克新的技术,进入新的领域,跟我朋友聊天的时候,我说要关注互联网发展,不断的学习,他说我搞SEO我管互联网发展干嘛,表示只能呵呵了。

周五的晚上很悠闲,在听宋东野的《安河桥》听惯了流行曲,听听这些小众的歌也感觉不错。

我知道 那些夏天

就像你一样回不来

我也不会再对谁满怀期待

我知道 这个世界

每天都有太多遗憾

所以你好

再见

那个夏天小镇上的你,离开的时候,是一辈子,太多遗憾,我也不会再对谁满怀期待。侘寂也许才是长久的

又是一年,生日快到了,生日快乐!仍然清晰的记得你的生日八月初四和手机号码。虽然过去了好久,虽然…