SEO技术文章:自动监控网站关键词排名的程序(2)

http://www.itjxue.com  2015-08-02 11:02  来源:未知  点击次数: 

为了让排名查询能自动化,可以将脚本设置为Linux的计划任务。在终端敲入:crontab -e,即可进入对于计划任务的编辑(它也使用一段脚本控制,而非Windows是图形界面)。为此必须要对VIM编辑器有最基础的了解,至少要能把字打上去并保存,可参考:http://ooxx.me/basic-vi.orz

在crontab输入并保存:00 05 * * * python cron.py semwatch.org keywords.txt

此处为了简化一些Linux的环境变量的问题,需要将cron.py, curl.py, keywords.txt三个文件,都放到~文件夹下。crontab的默认执行路径便是~。

前面一段命令的意思是在每日05:00自动执行脚本。当然需要计算机是处于开机的状态,也因此推荐使用一般不会关机的VPS来做这些监控类任务。此外需要注意的是系统的时间,VPS上面的时区可能和本地不同,可以在终端下使用date命令来确认。

至此日常排名数据的收集已经完成了,但光收集肯定不行,还需要分析。分析可以是各个角度的,这里以最常用的举例,分析网站关键词排名整体上升或下降的趋势。代码很简单:

analyse.py

# -*- coding:utf-8 -*-

import os

data = {}

for current in os.walk('/home/rank/'):

file_name = current[2][0]

date = file_name[:-4]

data[date] = 0

for line in open('/home/rank/%s' % file_name):

keyword, pos, url = line.rstrip().split('\t')

pos = int(pos)

if pos!=-1:

data[date] += 100 - pos

for date in data:

print '%s\t%d' % (date, data[date])

以一个数值的形式来量化整体的排名,数值越高则代表整体排名越好。可以直接运行python analyse.py,看到分析结果。但是光这样的分析往往是不够的,因为数字不是很形象,一般生成图表会好得多。

尽管结合Google Chart Tools等API,可以自动生成图表,但多数情况下不推荐这么做,因为比较麻烦。除非这些数据需要面向他人,或是需要每天都去分析排名趋势数据。

一般来说可以这么做:python analyse.py> data.csv

这条命令结合了Linux里面的重定向》,此时程序不会再输出内容到屏幕上,而是写入到data.csv文件中。之后即可使用如LibreOffice Calc(Linux下类似Excel的软件)打开它,生成Line Chart来以图形化的方式观察分析数据。

思路扩展

一般来说需求决定技术做法,但这里还是推荐初学者选下面的任意一个需求并实现它,不管目前是否有用。因为熟悉一门程序语言最好的方法是多写:

最简单的扩展,将收集脚本从面向百度的改为可用于Google的。

可以再写一个分析脚本,使用类似Google Analytics的高级细分的方式,做URL的筛选功能。目前监控的是整个网站的流量趋势,但在加入了筛选功能以后,可以统计诸如/article/和/photo/栏目不同的流量趋势;也可对于同类栏目进行划分,作为对于AB测试的效果追踪。

可以再改进收集脚本,辅以关键词的搜索量与对于特定排名位置的大致点击率,去估算网站所获得的SEO流量的话,可以更全面的了解其情况。

可以再大幅改进收集脚本,将SERP上面所有出现的网站的排名都进行统计,则可以完全把握竞争对手的动态。结合一些其它方面的监控以后,可以观察到竞争对手绝大多数站内对SEO有意义的修改,并及时跟进。(此时数据的储存方式最好用数据库来代替CSV,如使用MongoDB)

如果排名趋势追踪的需求非常重要的话,可以考虑做邮件每日报告及邮件预警之类功能。Python里面使用SMTP很容易,结合第三方邮箱的服务即可方便的发邮件。

技术扩展

文中涉及到了一些Python模块路径及Linux环境变量的问题,虽然一般情况下把文件都放在~文件夹下面是可以的,但毕竟这样子文件多了会很乱,可以去补充相关方面的知识。

文中提到了几个模块,比如os和datetime等。个人经验是其中os模块用得不多,偶尔需要用的时候可以百度一下寻找使用方法。而datetime平常用的不少,这些最好稍看下官方文档,对使用到的几个函数要了解:http://docs.python.org/library/datetime.html

pycurl模块的使用,除了程序范畴之外,它还考验对于Web的基础知识。比如REFERER等是什么含义一定要理解,参见HTTP头信息有关的知识点。

不管是否选择深入学习VIM编辑器,一定要牢记其打字和保存的方法,Linux里面很多东西只能靠它编辑。

虽然文章中未提到,但采集数据中经常会遇到文字编码问题。UTF-8, GB2312等之间大致有什么区别、Unicode又代表什么、Python里面怎么转换它们等,这些都需参考相关资料。

(责任编辑:IT教学网)

更多