find = False
#在SERP上面的URL中,寻找网站并确定排名
for pos, url in enumerate(urls, 1):
if site in url:
f.write('%st%dt%sn' % (keyword, pos, url))
find = True
break
#如果前100名没有找到网站
if not find: #更标准的写法是if find==False:
f.write('%st%dt%sn' % (keyword, -1, '-'))
delay = random.randint(1,2) #随机设定延时时间为1秒或2秒
time.sleep(delay) #期待x秒以后继续查询下一个词的排名
这段代码便可监控排名并收集数据。它的使用命令如:python cron.py semwatch keywords.txt
在运行之前,先要把关头词按行分隔,保存成txt文件,并在运行参数中让脚本去读取它。每次运行之后,会在/home/rank/文件夹下,成立一个近似1970-01-01.csv这样文件名的文件,保存着当日的关头词排名情况。
(责任编辑:sunsun)
为了让排名查询能自动化,可以将脚本设置为Linux的打算任务。在终端敲入:crontab -e,便可进入对打算任务的编辑(它也使用一段脚本节制,而非Windows是图形界面)。为此必须要对VIM编辑器有最根本的体会,至少要能把字打上去并保存,可参考:http://ooxx/basic-vi.orz
在crontab输入并保存:00 05 * * * python cron.py semwatch 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 '%st%d' % (date, data[date])
以一个数值的形式来量化整体的排名,数值越高则代表整体排名越好。可以直接运行python analyse.py,看到阐发成果。可是光这样的阐发往往是不敷的,因为数字不是很形象,一般生成图表会好很多。
虽然连络谷歌 Chart Tools等API,可以自动生成图表,但大都情况下不推荐这么做,因为比较麻烦。除非这些数据需要面向他人,或是需要每天都去阐发排名趋势数据。
一般来讲可以这么做:python analyse.py> data.csv
这条命令连络了Linux里面的重定向》,此时法度不会再输出内容到屏幕上,而是写入到data.csv文件中。之后便可使用如LibreOffice Calc(Linux下近似Excel的软件)打开它,生成Line Chart来以图形化的体例不雅察阐发数据。
思路扩大
一般来讲需求决定手艺做法,但这里仍是推荐初学者选下面的任意一个需求并实现它,不管目前是否有用。因为熟悉一门法度语言最好的体例是多写:
最简单的扩大,将收集脚本从面向百度的改成可用于谷歌的。
可以再写一个阐发脚本,使用近似谷歌 Analytics的高级细分的体例,做URL的筛选功能。目前监控的是整个网站的流量趋势,但在插手了筛选功能以后,可以统计诸如/article/和/photo/栏目不合的流量趋势;也可对同类栏目进行划分,作为对AB测试的效果追踪。
可以再改进收集脚本,辅以关头词的搜索量与对特定排名位置的年夜致点击率,去估算网站所取得的搜索引擎优化流量的话,可以更全面的体会其情况。
可以再年夜幅改进收集脚本,将SERP上面所有呈现的网站的排名都进行统计,则可以完全掌控竞争敌手的动态。连络一些其它方面的监控以后,可以不雅察到竞争敌手绝年夜大都站内对搜索引擎优化有意义的修改,并实时跟进。(此时数据的贮存体例最好用数据库来取代CSV,如使用MongoDB)
如果排名趋势追踪的需求很是重要的话,可以斟酌做邮件每日述说及邮件预警之类功能。Python里面使用SMTP很容易,连络第三方邮箱的办事便可便利的发邮件。