|
百度权重查询 站长买卖 友谊链接交流 网站建立,网站设计,企业建站就找313 从这篇文章开端不计划再破费少量精神去写顺序自身的知识,毕竟是各类书籍上有的内容。其他次要需求学习的是内置函数的运用,和一些模块的运用方式,尤其是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)
c.setopt(TIMEOUT, 120) for key in kwargs:
c.setopt(locals()[key], kwargs[key]) c.setopt(URL, url)
c.setopt(WRITEFUNCTION, s.write) if ‘USERAGENT’ not in kwargs:
c.setopt(USERAGENT, useragent) if ‘REFERER’ not in kwargs:
c.setopt(REFERER, url) while 1:
try: c.perform()
break except:
if retry: time.sleep(delay)
else: return False
return s.getvalue() 关于复杂的采集外面需求用到的下载功用,曾经被整合在了这个模块之中。如User-agent轮换、自动301/302跳转等、运用以后URL作为REFERER的有些取巧的办法等。这个模块的代码可以日后再渐渐了解,如今只需晓得它的用法即可。
首先到放置Python脚本的目录,将后面一段代码保管为curl.py,然后在同一目录下创立一个新文件,输出以下测试代码: # -*- coding:utf-8 -*-
import curl print curl.curl(\'http:// g.cn/\') #这样即下载了一个网页
#以下是比拟保险的下载方式,由于各种缘由,就算总体很波动的网站也偶然会呈现网页暂时无法翻开的状况 #当网页下载出错时,假如retry为True,则会不时重试,直到下载完网页
#delay则指定了几次重试之间的工夫距离,以秒为单位 print curl.curl(\'http:// g.cn/\', retry=True, delay=1)
#以下用到了一些Curl的参数,详细阐明可见:http:// curl.haxx.se/libcurl/c/curl_easy_setopt.html print curl.curl(\'http:// g.cn/\', FOLLOWLOCATION=False, COOKIE=\'mycookie\')
这个模块会在当前简直每个脚本外面都用到,所以这些根底用法务必牢记。
以上是溧水114网http://www.ls114.com 南京114 http://www.nj114.cn 整理发布,转载请注明
|
|