<b>全自动监控网站关键词排名(Python实现)</b>

作者:Lgo100 来源:未知 2012-04-17 23:33:58 阅读 我要评论 直达商品

  年夜这篇文章起头不筹算再破耗年夜量精神去写轨范自己的常识,事实?下场是各类书籍上有的内容。其余首要需要进修的是内置函数的使用,和一些模块的使用体例,尤其是pycurl, re, threading这些需要慢慢熟悉起来。

  若在进修中有不解的处所,在文章评论中可以提出,如不美观有空会死力辅佐解答。

  轨范需求

  对于稍年夜的一个网站,往往话苄良多关头词需要每隔一个周期监控它们的排名,以剖析seo效不美观的口角,及判定百度Google的动向等等。

  有一个关头在于数据的收集全自动与否的问题。若经常用Google Analytics剖析数据的话应该会感受到,数据剖析的需求是多种多样的,只有事先已经有了完美的各个维度的数据往后,才能跟着最初的设法进行剖析,而不会为数据的匮乏所局限。像Google Analytics这样超卓的工具完全自动的将这些数据收集了起来,才给seo对于流量的多样化剖析打下了基本。同样的,如不美观想剖析的时辰更自由的话,就需要记实尽多种类的历史数据,如不美观这些作为每日工作,那将耗时很是长,所以自动化的收集就浮现出了其主要性。

  现有的监控排名首要解决方案是使用商业软件Rank Tracker,但它也有些不是很理想的处所。好比对于几乎所有既有软件都存在的问题,功能不矫捷。此外它最年夜的短处之一在于它必然要找个具有图形界面的系统运行(因为它是Java实现的,有多操作系统版本,所以不必然是Windows)。

  对于DIY的Python剧本,在Linux系统琅缦沔可以将其放到crontab中(系统级打算使命),全自动的按时运行收集原始数据。然后在需要的时辰,再用此外的剧原本措置原始数据,进行各个维度的剖析。所需的一般情形下为:Linux系统的低设置装备摆设VPS一台,总共不跨越100行的Python代码(Windows也能实现这些,但相对斗劲麻烦)。

  然后再来剖析更具体的需求。此处我总结了一些原则:

  1. 除非数据量年夜到会对硬盘带来压力(好比每日数G的日志的剖析等),否则把能想到的尽多的数据都记实下来。因为剖析的需求是多变的,数据若周全即可有备无患。

  2. 同上,除非数据量极年夜,否则务必把历史数据全数保留下来。在年夜数据量的时辰,也需要按现实情形保留一按时刻区间的数据(打个例如,前3年每月保留一副本,昔时每周保留一副本)。历史数据的对比在良多时辰的意义很是年夜。

  3. 当数据很是单一的时辰,使用txt按行保留;当数据斗劲简单的时辰,使用csv按行列储存;当数据斗劲复杂的时辰,可以考虑使用MongoDB等key-value型NoSQL储存;再复杂的时辰,使用MySQL之类的关系性数据库储存。但这些不是绝对的,仍是要看现实情形而定。

  对于今朝的需求,因为是要监控关头词排名趋向,所以一般最多监控几千个关头词就够了。或许网站斗劲年夜,想体味数十万的关头辞书排名,但对于体味排名趋向的情形下,没需要全数发芽,随机拔取其一一小部门作为样本就可以了。

  因为最多几千个关头词,所以最好天天记实一次它们的排名数据(保证不变的情形下,对于单IP,Google天天可以发芽5000+词,百度则可以发芽数万的词)。而且数据自己,首要为关头词、排名、着陆页URL这几项,文件体积很小,所以天天都保留一份数据。

  数据的储存体例上,此时一般建议选择csv。它和Excel表格(xls)在数据的储存体例上是一模一样的。

  代码实现

  这些代码需要以下运行情形:

  Linux操作系统

  Python的第三方模块pycurl

  Python下载网页的最简单体例是:

import urllib2

print urllib2.urlopen('http://***.com/').read()

  但urllib2模块自己功能虽然还行,却仍离pycurl模块有较年夜距离。且在做稍微复杂一些的操作时,pycurl模块使用起来比urllib2模块便利良多。pycurl是必需要谙练运用的模块之一,但也因为它上手可能会让人有颔首疼,这里我自己写了一个模块,以此即可便利的使用它:

from pycurl import *

import StringIO, time, random

def curl(url, retry=False, delay=1, **kwargs):

'''Basic usage: curl('http://www.xxx.com/'), will download the url.

If set `retry` to True, when network error, it will retry automatically.

`delay` set the seconds to delay between every retry.

**kwargs can be curl params. For example:

curl(url, FOLLOWLOCATION=False, USERAGENT='Firefox')

'''

useragent_list = [

'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6',

'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',

'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)',

'Opera/9.20 (Windows NT 6.0; U; en)',

'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.1; .NET CLR 1.1.4322)',

'Opera/9.00 (Windows NT 5.1; U; en)',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.0',

'Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en]',

'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1',

]

size = len(useragent_list)

useragent = useragent_list[random.randint(0, size-1)]

s = StringIO.StringIO()

c = Curl()

c.setopt(NOSIGNAL, True)

c.setopt(FOLLOWLOCATION, True)

c.setopt(MAXREDIRS, 5)


  推荐阅读

  <b>合格SEOER的白帽操作手册:SEO效果最大化</b>

巨匠好,我是虚子雨。不知道巨匠对于白帽seo关注度有若干好多,小我因为喜欢进行白帽seo操作,对于这个辞书关注度就斗劲高,而且也倡导我四周的伴侣进行白帽seo,因为黑帽seo有时辰虽然短时刻内有不错的效不美观,可>>>详细阅读


本文标题:<b>全自动监控网站关键词排名(Python实现)</b>

地址:http://www.lgo100.com/a/34/20120417/51890.html

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
我的评论: 人参与评论
验证码: 匿名回答
网友评论(点击查看更多条评论)
友情提示: 登录后发表评论,可以直接从评论中的用户名进入您的个人空间,让更多网友认识您。
自媒体专栏

评论

热度