商务热线:0371-63360829

让你的网站脱颖而出:构建自己的Aleax查询服务

发布时间:2015-10-29 点击数:3546

每个网站的站长都会想尽办法提升网站的流量,从而获得更高的广告收入。那么评判一个网站好坏的标准,如Google的PR(PageRank),百度权重等。从PV(Page View)流量的角度,一个非常重要指标就是Alexa网站排名。

同全球的网站相比,你就能了解到自己网站的位置,让我们先挤进全球前10万的排名吧,不然都不好意思跟同行说,“自己有一个网站”。

目录

1. Alexa介绍

2. 用Node开发Alexa服务

3. 作者介绍

1. Alexa介绍

Alexa (http://www.alexa.com/)是一家发布世界网站排名的网站,以搜索引擎起家的Alexa创建于1996年4月(美国),目的是让互联网网友在分享虚拟世界资源的同时,更多地参与互联网资源的组织。Alexa每天在网上搜集超过1TB的信息,不仅给出多达几十亿的网址链接,而且为其中的每一个网站进行了排名。可以说,Alexa是当前拥有URL数量最庞大,排名信息发布最详尽的网站。

1999年,Alexa被美国电子商务旗舰企业“亚马逊”收购,成为后者的全资子公司。2002年春,Alexa放弃了自己的搜索引擎,转而与Google合作。

Alexa提供了网站流量统计的服务,对全球有域名的网站进行流量记录。也就是说,只要你申请了域名,在Alexa中就可以查询到你的网站的排名。Alexa的网站排名是按照每个特定网站的被浏览率进行排名的。浏览率越大,排名越靠前。

网站优化 网站排名 Aleax查询 百度权重 提升网站流量 

通常情况,如果你的域名刚刚注册,排名在1千万以上;接下来,你每天都经心运营网站,小有起色时,排名会进入前1百万;然后,你继续发布优质内容,坚持了一段时间,排名会升至前50万;当你的网站在某一领域小有名气时,排名可以到达10万,如粉丝日志122616(2015-10-25),这时就会有广告主愿意来投放广告了;如果你做的是以盈利为目的的网站,那么你需要再加油,进入到前1万,这个时候你的流量已经可以为你带来生意了;如果能做的更好,排名进入前2000,像雪球排名到2109(2015-10-25),那么你将会有一个很高的估值了;如果能赶上一个天大的机遇,你的网站排名到了前100,那么你的网站将给你带来上市公司的价值,如京东105(2015-10-25);如果你是天才型的CEO,网站进了前10名,那么你将会成为一个产业的领袖,甚至是某个区域的首富,如百度4(2015-10-25)。

站长们,加油!

2. 用Node开发Alexa服务

2.1 Alexa开放API

Alexa网站排名被业界普通的认可,排名数据会经常地被引用,每次都在网站上查询就会显得不方便。Amazon提供的Alexa的API,让开发者可以构建自己的Alexa查询的应用。

Alexa有2个主要的数据API服务。

• Alexa Web Information Service,查询单个网站的排名信息

• Alexa Top Sites,查询网站的综合排名

通常情况,只需要调用UrlInfo数据接口,就可以获得网站的流量数据了。当然,这个接口的定义,并不像我之前想象的那么好用,而且开放出来的数据有限。

UrlInfo接口的API,如下图所示。

网站优化 网站排名 Aleax查询 百度权重 提升网站流量 

官方提供了多语言的SDK工具包,我觉得还是Node.js最方便。我构建的一个Alexa数据查询服务,http://fens.me/alexa

网站优化 网站排名 Aleax查询 百度权重 提升网站流量 

2.2 创建AWS的API密钥

我们在使用AWS的API之前,需要先创建密钥,类似于OAuth2的访问的机制。

1. 注册AWS账号,请大家自己完成。注册

2. 进入AWS账号管理控制台,控制台

3. 从控制台选择“安全证书”

网站优化 网站排名 Aleax查询 百度权重 提升网站流量 

4. 创建访问密钥(访问密钥 ID 和私有访问密钥)

我们一会写程序的时候,需要输入创建的访问密钥 ID 和私有访问密钥。

2.3 用Node开发Alexa服务

接下来,介绍用Node构建一个Alexa的项目。

我的系统环境

• Win10 64bit

• Node v0.12.3

• NPM 2.9.1

创建项目

~ D:\workspace\nodejs>mkdir nodejs-alexa && cd nodejs-alexa

新建Node项目配置文件:package.json

  1. ~ vi package.json  
  2.  
  3. {  
  4.   "name": "alexa-demo",  
  5.   "version": "0.0.1",  
  6.   "description": "alexa web demo",  
  7.   "license": "MIT",  
  8.   "dependencies": {  
  9.     "awis": "0.0.8"  
  10.   }  

安装awis包

  • ~ D:\workspace\nodejs\nodejs-alexa>npm install  
  • npm WARN package.json alexa-demo@0.0.1 No repository field.  
  • npm WARN package.json alexa-demo@0.0.1 No README data  
  • alexarank@0.1.1 node_modules\alexarank  
  • ├── xml2js@0.4.13 (sax@1.1.4, xmlbuilder@3.1.0)  
  • └── request@2.30.0 (forever-agent@0.5.2, aws-sign2@0.5.0, qs@0.6.6, tunnel-agent@0.3.0, oauth-sign@0.3.0, json-stringify-safe@5.0.1, mime@1.2.11, node-uuid@1.4.3, tough-cookie@0.9.15, form-data@0.1.4, hawk@1.0.0, http-signature@0.10.1)  
  •  
  • awis@0.0.8 node_modules\awis  
  • ├── xml2js@0.4.13 (sax@1.1.4, xmlbuilder@3.1.0)  
  • ├── lodash@3.10.1  
  • └── request@2.65.0 (aws-sign2@0.6.0, forever-agent@0.6.1, caseless@0.11.0, stringstream@0.0.4, oauth-sign@0.8.0, tunnel-agent@0.4.1, isstream@0.1.2, json-stringify-safe@5.0.1, extend@3.0.0, node-uuid@1.4.3, qs@5.2.0, tough-cookie@2.2.0, combined-stream@1.0.5, mime-types@2.1.7, form-data@1.0.0-rc3, http-signature@0.11.0, hawk@3.1.0, bl@1.0.0, har-validator@2.0.2)
 

新建文件alexa.js,调用AWS Alexa网站排名API。

  1. ~ vi alexa.js  
  2.  
  3. // 定义AWS密钥  
  4. var key = 'xxxxxxxxxxxxxxx';  
  5. var sercet = 'xxxxxxxxxxxxxxx';  
  6.  
  7. // 创建awis实例化对象  
  8. var awis = require('awis');  
  9. var client = awis({  
  10.   key: key,  
  11.   secret: sercet  
  12. });  
  13.  
  14. // 调用UrlInfo接口  
  15. console.log("=============UrlInfo=================");  
  16. client({  
  17.   'Action''UrlInfo',                         //UrlInfo接口  
  18.   'Url''fens.me',                            //查询的网站  
  19.   'ResponseGroup''TrafficData,ContentData'   //需要的数据组  
  20. }, function (err, data) {  
  21.   if(err) console.log(err);  
  22.   console.log(data);    
  23. });  

运行程序node alexa.js

  1. ~ D:\workspace\nodejs\nodejs-alexa>node alexa.js  
  2. =============UrlInfo=================  
  3. { contentData:  
  4.    { dataUrl: 'fens.me',  
  5.      siteData:  
  6.       { title: '粉丝日志',  
  7.         description: '跨界的IT博客|Hadoop家族, R, RHadoop, Nodejs, AngularJS, NoSQL, IT金融' },  
  8.      speed: { medianLoadTime: '982', percentile: '70' },  
  9.      adultContent: '',  
  10.      language: '',  
  11.      linksInCount: '198',  
  12.      keywords: '',  
  13.      ownedDomains: '' },  
  14.   trafficData:  
  15.    { dataUrl: 'fens.me',  
  16.      rank: '122616',  
  17.      usageStatistics: { usageStatistic: [Object] },  
  18.      contributingSubdomains: { contributingSubdomain: [Object] } } } 

简简单单地几行代码,都获得了Alexa的排名信息。后台打印时Object没有转到成对象,我做了一个服务,可以通过HTTP输出查看完整的返回。http://api.fens.me/alexa/fens.me

我们查检一下awis包的源代码可以发现,其实AWS Alexa服务返回是XML,awis的自动帮我们做了JSON的转型处理,如果想查看原始的返回值,可以修改awis包中index.js文件parse()函数。

  1. function parse(xml, req, cb) {  
  2.   console.log(xml); //打印  
  3.  
  4.   ....  
  5. }  

运行程序

  1. D:\workspace\nodejs\nodejs-alexa>node alexa.js 
  2. =============UrlInfo=================  
  3. <?xml version="1.0"?> 
  4. <aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11"><aws:OperationRequest><aws:RequestId>1e7d8406-4b62-3460-27fb-325fc3dc3e85</aws:RequestId></aws:OperationRequest><aws:UrlInfoResult><aws:Alexa> 
  5.  
  6.   <aws:ContentData> 
  7.     <aws:DataUrl type="canonical">fens.me</aws:DataUrl> 
  8.     <aws:SiteData> 
  9.       <aws:Title>粉丝日志</aws:Title> 
  10.       <aws:Description>跨界的IT博客|Hadoop家族, R, RHadoop, Nodejs, AngularJS, NoSQL, IT金融</aws:Description> 
  11.     </aws:SiteData> 
  12.     <aws:Speed> 
  13.       <aws:MedianLoadTime>982</aws:MedianLoadTime> 
  14.       <aws:Percentile>70</aws:Percentile> 
  15.     </aws:Speed> 
  16.     <aws:AdultContent/> 
  17.     <aws:Language/> 
  18.     <aws:LinksInCount>198</aws:LinksInCount> 
  19.     <aws:Keywords/> 
  20.     <aws:OwnedDomains/> 
  21.   </aws:ContentData> 
  22.   <aws:TrafficData> 
  23.     <aws:DataUrl type="canonical">fens.me</aws:DataUrl> 
  24.     <aws:Rank>122616</aws:Rank> 
  25.     <aws:UsageStatistics> 
  26.       <aws:UsageStatistic> 
  27.         <aws:TimeRange> 
  28.           <aws:Months>3</aws:Months> 
  29.         </aws:TimeRange> 
  30.         <aws:Rank> 
  31.           <aws:Value>122616</aws:Value> 
  32.           <aws:Delta>+28849</aws:Delta> 
  33.         </aws:Rank> 
  34.         <aws:Reach> 
  35.           <aws:Rank> 
  36.             <aws:Value>110056</aws:Value> 
  37.             <aws:Delta>+25785</aws:Delta> 
  38.           </aws:Rank> 
  39.           <aws:PerMillion> 
  40.             <aws:Value>12.5</aws:Value> 
  41.             <aws:Delta>-24.68%</aws:Delta> 
  42.           </aws:PerMillion> 
  43.         </aws:Reach> 
  44.         <aws:PageViews> 
  45.           <aws:PerMillion> 
  46.             <aws:Value>0.27</aws:Value> 
  47.             <aws:Delta>-24.84%</aws:Delta> 
  48.           </aws:PerMillion> 
  49.           <aws:Rank> 
  50.             <aws:Value>194189</aws:Value> 
  51.             <aws:Delta>43945</aws:Delta> 
  52.           </aws:Rank> 
  53.           <aws:PerUser> 
  54.             <aws:Value>1.9</aws:Value> 
  55.             <aws:Delta>0%</aws:Delta> 
  56.           </aws:PerUser> 
  57.         </aws:PageViews> 
  58.       </aws:UsageStatistic> 
  59.       <aws:UsageStatistic> 
  60.         <aws:TimeRange> 
  61.           <aws:Months>1</aws:Months> 
  62.         </aws:TimeRange> 
  63.         <aws:Rank> 
  64.           <aws:Value>102621</aws:Value> 
  65.           <aws:Delta>-30257</aws:Delta> 
  66.         </aws:Rank> 
  67.         <aws:Reach> 
  68.           <aws:Rank> 
  69.             <aws:Value>95663</aws:Value> 
  70.             <aws:Delta>-20326</aws:Delta> 
  71.           </aws:Rank> 
  72.           <aws:PerMillion> 
  73.             <aws:Value>15</aws:Value> 
  74.             <aws:Delta>+20%</aws:Delta> 
  75.           </aws:PerMillion> 
  76.         </aws:Reach> 
  77.         <aws:PageViews> 
  78.           <aws:PerMillion> 
  79.             <aws:Value>0.37</aws:Value> 
  80.             <aws:Delta>+60%</aws:Delta> 
  81.           </aws:PerMillion> 
  82.           <aws:Rank> 
  83.             <aws:Value>153976</aws:Value> 
  84.             <aws:Delta>-69981</aws:Delta> 
  85.           </aws:Rank> 
  86.           <aws:PerUser> 
  87.             <aws:Value>2.2</aws:Value> 
  88.             <aws:Delta>+30%</aws:Delta> 
  89.           </aws:PerUser> 
  90.         </aws:PageViews> 
  91.       </aws:UsageStatistic> 
  92.       <aws:UsageStatistic> 
  93.         <aws:TimeRange> 
  94.           <aws:Days>7</aws:Days> 
  95.         </aws:TimeRange> 
  96.         <aws:Rank> 
  97.           <aws:Value>114709</aws:Value> 
  98.           <aws:Delta>+32390</aws:Delta> 
  99.         </aws:Rank> 
  100.         <aws:Reach> 
  101.           <aws:Rank> 
  102.             <aws:Value>103552</aws:Value> 
  103.             <aws:Delta>+27312</aws:Delta> 
  104.           </aws:Rank> 
  105.           <aws:PerMillion> 
  106.             <aws:Value>14</aws:Value> 
  107.             <aws:Delta>-28.59%</aws:Delta> 
  108.           </aws:PerMillion> 
  109.         </aws:Reach> 
  110.         <aws:PageViews> 
  111.           <aws:PerMillion> 
  112.             <aws:Value>0.3</aws:Value> 
  113.             <aws:Delta>-37.28%</aws:Delta> 
  114.           </aws:PerMillion> 
  115.           <aws:Rank> 
  116.             <aws:Value>188124</aws:Value> 
  117.             <aws:Delta>58655</aws:Delta> 
  118.           </aws:Rank> 
  119.           <aws:PerUser> 
  120.             <aws:Value>2.0</aws:Value> 
  121.             <aws:Delta>-12.11%</aws:Delta> 
  122.           </aws:PerUser> 
  123.         </aws:PageViews> 
  124.       </aws:UsageStatistic> 
  125.       <aws:UsageStatistic> 
  126.         <aws:TimeRange> 
  127.           <aws:Days>1</aws:Days> 
  128.         </aws:TimeRange> 
  129.         <aws:Rank> 
  130.           <aws:Value>74860</aws:Value> 
  131.           <aws:Delta>-93163</aws:Delta> 
  132.         </aws:Rank> 
  133.         <aws:Reach> 
  134.           <aws:Rank> 
  135.             <aws:Value>70563</aws:Value> 
  136.             <aws:Delta>-54001</aws:Delta> 
  137.           </aws:Rank> 
  138.           <aws:PerMillion> 
  139.             <aws:Value>20</aws:Value> 
  140.             <aws:Delta>+60%</aws:Delta> 
  141.           </aws:PerMillion> 
  142.         </aws:Reach> 
  143.         <aws:PageViews> 
  144.           <aws:PerMillion> 
  145.             <aws:Value>0.6</aws:Value> 
  146.             <aws:Delta>+300%</aws:Delta> 
  147.           </aws:PerMillion> 
  148.           <aws:Rank> 
  149.             <aws:Value>111541</aws:Value> 
  150.             <aws:Delta>-210757</aws:Delta> 
  151.           </aws:Rank> 
  152.           <aws:PerUser> 
  153.             <aws:Value>2</aws:Value> 
  154.             <aws:Delta>+100%</aws:Delta> 
  155.           </aws:PerUser> 
  156.         </aws:PageViews> 
  157.       </aws:UsageStatistic> 
  158.     </aws:UsageStatistics> 
  159.     <aws:ContributingSubdomains> 
  160.       <aws:ContributingSubdomain> 
  161.         <aws:DataUrl>blog.fens.me</aws:DataUrl> 
  162.         <aws:TimeRange> 
  163.           <aws:Months>1</aws:Months> 
  164.         </aws:TimeRange> 
  165.         <aws:Reach> 
  166.           <aws:Percentage>99.19%</aws:Percentage> 
  167.         </aws:Reach> 
  168.         <aws:PageViews> 
  169.           <aws:Percentage>99.64%</aws:Percentage> 
  170.           <aws:PerUser>2.2</aws:PerUser> 
  171.         </aws:PageViews> 
  172.       </aws:ContributingSubdomain> 
  173.       <aws:ContributingSubdomain> 
  174.         <aws:DataUrl>OTHER</aws:DataUrl> 
  175.         <aws:TimeRange> 
  176.           <aws:Months>1</aws:Months> 
  177.         </aws:TimeRange> 
  178.         <aws:Reach> 
  179.           <aws:Percentage>0</aws:Percentage> 
  180.         </aws:Reach> 
  181.         <aws:PageViews> 
  182.           <aws:Percentage>0.36%</aws:Percentage> 
  183.           <aws:PerUser>0</aws:PerUser> 
  184.         </aws:PageViews> 
  185.       </aws:ContributingSubdomain> 
  186.     </aws:ContributingSubdomains> 
  187.   </aws:TrafficData> 
  188. </aws:Alexa></aws:UrlInfoResult><aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/"><aws:StatusCode>Success</aws:StatusCode></aws:ResponseStatus></aws:Response></aws:UrlInfoResponse> 

除了UrlInfo接口还有几个接口可以使用。

TrafficHistory接口

  1. console.log("=============TrafficHistory=================");  
  2. client({  
  3.   'Action': 'TrafficHistory',  
  4.   'Url': 'fens.me',  
  5.   'ResponseGroup': 'History'  
  6. }, function (err, res) {  
  7.     if(err) console.log(err);  
  8.     console.log(res.trafficHistory);  
  9.     console.log(res.trafficHistory.range);  
  10.     console.log(res.trafficHistory.site);  
  11.     console.log(res.trafficHistory.start);  
  12.     console.log(res.trafficHistory.historicalData);  
  13.     console.log(res.trafficHistory.historicalData.data);  
  14.     console.log(res.trafficHistory.historicalData.data.length);  
  15.     res.trafficHistory.historicalData.data.forEach(function (item) {  
  16.       console.log(item.date);  
  17.       console.log(item.pageViews);  
  18.       console.log(item.rank);  
  19.       console.log(item.reach);  
  20.     });  
  21. }); 

运行程序

  1. ~ D:\workspace\nodejs\nodejs-alexa>node alexa.js 
  2. =============TrafficHistory=================  
  3. { range: '31',  
  4.   site: 'fens.me',  
  5.   start: '2015-09-23',  
  6.   historicalData:  
  7.    { data:  
  8.       [ [Object],  
  9.         [Object],  
  10.         [Object],  
  11.         [Object],  
  12.         [Object],  
  13.         [Object],  
  14.         [Object],  
  15.         [Object],  
  16.         [Object],  
  17.         [Object],  
  18.         [Object],  
  19.         [Object],  
  20.         [Object],  
  21.         [Object],  
  22.         [Object],  
  23.         [Object],  
  24.         [Object],  
  25.         [Object],  
  26.         [Object],  
  27.         [Object],  
  28.         [Object],  
  29.         [Object],  
  30.         [Object],  
  31.         [Object],  
  32.         [Object],  
  33.         [Object],  
  34.         [Object],  
  35.         [Object],  
  36.         [Object],  
  37.         [Object],  
  38.         [Object] ] } }  
  39.  
  40. // 省略输出 

SitesLinkingIn接口

  1. console.log("=============SitesLinkingIn=================");  
  2. client({  
  3.   'Action': 'SitesLinkingIn',  
  4.   'Url': 'fens.me',  
  5.   'ResponseGroup': 'SitesLinkingIn'  
  6. }, function (err, data) {  
  7.   if(err) console.log(err);  
  8.   console.log(data);  
  9. }); 

运行程序

  1. ~ D:\workspace\nodejs\nodejs-alexa>node alexa.js 
  2. =============SitesLinkingIn=================  
  3. { sitesLinkingIn:  
  4.    { site:  
  5.       [ [Object],  
  6.         [Object],  
  7.         [Object],  
  8.         [Object],  
  9.         [Object],  
  10.         [Object],  
  11.         [Object],  
  12.         [Object],  
  13.         [Object],  
  14.         [Object] ] } } 

CategoryBrowse接口

  1. console.log("=============CategoryBrowse=================");  
  2. client({  
  3.   'Action': 'CategoryBrowse',  
  4.   'Url': 'fens.me',  
  5.   'Path': 'Top/china',  
  6.   'ResponseGroup': 'LanguageCategories'  
  7. }, function (err, data) {  
  8.   if(err) console.log(err);  
  9.   console.log(data);  
  10. });  

运行程序

  1. ~ D:\workspace\nodejs\nodejs-alexa>node alexa.js 
  2. =============CategoryBrowse=================  
  3. { categoryBrowse: { languageCategories: '' } }  

最后,我们只需要把这个程序用web封装一下,就可以提供对用户的服务了,参考我的网站http://fens.me/alexa 。

本文对应的代码请通过github进行下载,下载地址为:https://github.com/bsspirit/nodejs-alexa 。

Alexa网站排名以第三方的视角给全球的每个网站进行了排名,甚至是定价。做为一个优秀的网长,我们要使用好Alexa工具,了解自己的网站和竞争对手的网站,才能网站脱颖而出,成为成功的站长!


上一篇:没有上一篇拉
收缩
技术部 业务部 售后服务 0371-63360829