<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>白舟工作室 &#187; alexa</title>
	<atom:link href="http://www.baizoo.cn/tag/alexa/feed" rel="self" type="application/rss+xml" />
	<link>http://www.baizoo.cn</link>
	<description>——长风破浪会有时</description>
	<lastBuildDate>Mon, 30 Jan 2012 08:09:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ASP获取网站alexa排名的源码</title>
		<link>http://www.baizoo.cn/archives/361.html</link>
		<comments>http://www.baizoo.cn/archives/361.html#comments</comments>
		<pubDate>Mon, 16 Feb 2009 00:08:43 +0000</pubDate>
		<dc:creator>baizoo</dc:creator>
				<category><![CDATA[技术爱好]]></category>
		<category><![CDATA[alexa]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[主要是用MSXML2.XMLHTTP获取页面内容的方式采集到alexa的值 如本站的真实alexa获取地址为：http://www.alexa.com/data/details/traffic_details/baizoo.cn 具体代码如下：]]></description>
			<content:encoded><![CDATA[<p>主要是用MSXML2.XMLHTTP获取页面内容的方式采集到alexa的值</p>
<p>如本站的真实alexa获取地址为：http://www.alexa.com/data/details/traffic_details/baizoo.cn</p>
<p>具体代码如下：<span id="more-361"></span><br />
<coolcode lang="html"><%</p>
<p>'获取主域名<br />
Function getDomainUrl(url)<br />
tempurl=replace(url,"<a rel="external" href="http://" target="_blank">http://</a>&#8220;,&#8221;")<br />
if instr(tempurl,&#8221;/&#8221;)&gt;0 then<br />
  tempurl=left(tempurl,instr(tempurl,&#8221;/&#8221;)-1)<br />
end If<br />
getDomainurl=tempurl<br />
End Function</p>
<p>&#8216;返回页面源代码内容，<a rel="external" href="http://www.baizoo.cn/article.asp?id=322" target="_blank">MSXML2.XMLHTTP手册下载</a><br />
Function GetHttpPage(HttpUrl)<br />
   If IsNull(HttpUrl)=True or Len(HttpUrl)&lt;18 or HttpUrl=&#8221;$False$&#8221; Then<br />
      GetHttpPage=&#8221;$False$&#8221;<br />
      Exit Function<br />
   End If<br />
   Dim Http<br />
   Set Http=server.createobject(&#8220;MSXML2.XMLHTTP&#8221;)<br />
   Http.open &#8220;GET&#8221;,HttpUrl,False<br />
   Http.Send()<br />
   If Http.Readystate&lt;&gt;4 then<br />
      Set Http=Nothing<br />
      GetHttpPage=&#8221;$False$&#8221;<br />
      Exit function<br />
   End if<br />
   GetHTTPPage=Http.responseText<br />
   Set Http=Nothing<br />
   If Err.number&lt;&gt;0 then<br />
      Err.Clear<br />
   End If<br />
End Function</p>
<p>&#8216;==================================================<br />
&#8216;函数名：ScriptHtml<br />
&#8216;作  用：过滤html标记<br />
&#8216;参  数：ConStr &#8212;&#8212; 要过滤的字符串<br />
&#8216;   TagName &#8212;&#8212;要过滤的标签<br />
&#8216;   FType 1表示过滤左边标签  2表示过滤左右标签及中间的值  3表示过滤左边标签和右边标签，保留内容。<br />
&#8216;==================================================<br />
Function ScriptHtml(Byval ConStr,TagName,FType,includestr)<br />
    Dim Re<br />
    Set Re=new RegExp<br />
    Re.IgnoreCase =true<br />
    Re.Global=True<br />
    Select Case FType<br />
    Case 1<br />
       Re.Pattern=&#8221;&lt;&#8221; &amp; TagName &amp; &#8220;([^&gt;])*(&#8220;&amp;includestr&amp;&#8221;){1,}([^&gt;])*&gt;&#8221;<br />
       ConStr=Re.Replace(ConStr,&#8221;")<br />
    Case 2<br />
       Re.Pattern=&#8221;&lt;&#8221; &amp; TagName &amp; &#8220;([^&gt;])*(&#8220;&amp;includestr&amp;&#8221;){1,}([^&gt;])*&gt;.*?&lt;/&#8221; &amp; TagName &amp; &#8220;([^&gt;])*&gt;&#8221;<br />
    &#8217;response.write constr&amp;&#8221;&lt;br&gt;&#8221;<br />
       ConStr=Re.Replace(ConStr,&#8221;")<br />
    &#8217;response.write server.htmlencode(constr)&amp;&#8221;&lt;br&gt;&#8221;<br />
    Case 3<br />
  Re.Pattern=&#8221;&lt;&#8221; &amp; TagName &amp; &#8220;([^&gt;])*(&#8220;&amp;includestr&amp;&#8221;){1,}([^&gt;])*&gt;&#8221;<br />
       ConStr=Re.Replace(ConStr,&#8221;")<br />
       Re.Pattern=&#8221;&lt;/&#8221; &amp; TagName &amp; &#8220;([^&gt;])*&gt;&#8221;<br />
       ConStr=Re.Replace(ConStr,&#8221;")<br />
    End Select<br />
    ScriptHtml=ConStr<br />
    Set Re=Nothing<br />
End Function</p>
<p>&#8216;==================================================<br />
&#8216;函数名：GetBody<br />
&#8216;作  用：截取页面源码字符串<br />
&#8216;参  数：ConStr &#8212;&#8212;将要截取的字符串<br />
&#8216;参  数：StartStr &#8212;&#8212;开始字符串<br />
&#8216;参  数：OverStr &#8212;&#8212;结束字符串<br />
&#8216;参  数：IncluL &#8212;&#8212;是否包含StartStr<br />
&#8216;参  数：IncluR &#8212;&#8212;是否包含OverStr<br />
&#8216;==================================================<br />
Function GetBody(ConStr,StartStr,OverStr,IncluL,IncluR)<br />
   If ConStr=&#8221;$False$&#8221; or ConStr=&#8221;" or IsNull(ConStr)=True or StartStr=&#8221;" or IsNull(StartStr)=True or OverStr=&#8221;" or IsNull(OverStr)=True Then<br />
      GetBody=&#8221;$False$&#8221;<br />
      Exit Function<br />
   End If<br />
   Dim ConStrTemp<br />
   Dim Start,Over<br />
   ConStrTemp=Lcase(ConStr)<br />
   StartStr=Lcase(StartStr)<br />
   OverStr=Lcase(OverStr)<br />
   Start = InStrB(1, ConStrTemp, StartStr, vbBinaryCompare)<br />
   &#8216;response.write Start&amp;&#8221;&lt;br&gt;&#8221;&amp;IncluL&amp;&#8221;&lt;br&gt;&#8221;<br />
   &#8216;response.end<br />
   If Start&lt;=0 then<br />
      GetBody=&#8221;$False$&#8221;<br />
      Exit Function<br />
   Else<br />
      If IncluL=False Then<br />
         Start=Start+LenB(StartStr)<br />
      End If<br />
   End If<br />
   Over=InStrB(Start,ConStrTemp,OverStr,vbBinaryCompare)<br />
   &#8216;response.write Over<br />
   &#8216;response.end<br />
   &#8216;response.write Start&amp;&#8221;  &#8221;&amp;Over&amp;&#8221;  &#8221;&amp;Over-Start<br />
   &#8216;response.end<br />
   If Over&lt;=0 or Over&lt;=Start then<br />
      GetBody=&#8221;$False$&#8221;<br />
      Exit Function<br />
   Else<br />
      If IncluR=True Then<br />
         Over=Over+LenB(OverStr)<br />
      End If<br />
   End If<br />
  <br />
   GetBody=MidB(ConStr,Start,Over-Start)<br />
   &#8216;response.write getBody<br />
   &#8216;response.end<br />
End Function</p>
<p>&#8216;==================================================<br />
&#8216;函数名：GetArray<br />
&#8216;作  用：提取链接地址，以$Array$分隔<br />
&#8216;参  数：ConStr &#8212;&#8212;提取地址的原字符<br />
&#8216;参  数：StartStr &#8212;&#8212;开始字符串<br />
&#8216;参  数：OverStr &#8212;&#8212;结束字符串<br />
&#8216;参  数：IncluL &#8212;&#8212;是否包含StartStr<br />
&#8216;参  数：IncluR &#8212;&#8212;是否包含OverStr<br />
&#8216;==================================================<br />
Function GetArray(Byval ConStr,StartStr,OverStr,IncluL,IncluR)<br />
   If ConStr=&#8221;$False$&#8221; or ConStr=&#8221;" or IsNull(ConStr)=True or StartStr=&#8221;" or OverStr=&#8221;" or  IsNull(StartStr)=True or IsNull(OverStr)=True Then<br />
      GetArray=&#8221;$False$&#8221;<br />
      Exit Function<br />
   End If<br />
   Dim TempStr,TempStr2,objRegExp,Matches,Match<br />
   TempStr=&#8221;"<br />
   Set objRegExp = New Regexp<br />
   objRegExp.IgnoreCase = True<br />
   objRegExp.Global = True<br />
   objRegExp.Pattern = &#8220;(&#8220;&amp;StartStr&amp;&#8221;).+?(&#8220;&amp;OverStr&amp;&#8221;)&#8221;<br />
   Set Matches =objRegExp.Execute(ConStr)<br />
   For Each Match in Matches<br />
      TempStr=TempStr &amp; &#8220;$Array$&#8221; &amp; Match.Value<br />
   Next<br />
   Set Matches=nothing<br />
  <br />
   If TempStr=&#8221;" Then<br />
      GetArray=&#8221;$False$&#8221;<br />
      Exit Function<br />
   End If<br />
   TempStr=Right(TempStr,Len(TempStr)-7)<br />
   If IncluL=False then<br />
      objRegExp.Pattern =StartStr<br />
      TempStr=objRegExp.Replace(TempStr,&#8221;")<br />
   End if<br />
   If IncluR=False then<br />
      objRegExp.Pattern =OverStr<br />
      TempStr=objRegExp.Replace(TempStr,&#8221;")<br />
   End if<br />
   Set objRegExp=nothing<br />
   Set Matches=nothing<br />
  <br />
   If TempStr=&#8221;" then<br />
      GetArray=&#8221;$False$&#8221;<br />
   Else<br />
      GetArray=TempStr<br />
   End if<br />
End Function</p>
<p>Function getAlexaRank(weburl)<br />
tempurl=getDomainUrl(weburl)<br />
&#8216;读取<a rel="external" href="http://client.alexa.com/common/css/scramble.css" target="_blank">http://client.alexa.com/common/css/scramble.css</a>中的数据<br />
alexacss=&#8221;<a rel="external" href="http://" target="_blank">http://</a>client.alexa.com/common/css/scramble.css&#8221;<br />
strAlexaCss=GetHttpPage(alexacss)<br />
&#8216;response.write strAlexaCss<br />
&#8216;response.end<br />
alexarankqueryurl=&#8221;<a rel="external" href="http://" target="_blank">http://</a>www.alexa.com/data/details/traffic_details/&#8221;&amp;tempurl</p>
<p>strAlexaContent=GetHttpPage(alexarankqueryurl)</p>
<p>rankcontent=getBody(strAlexaContent,&#8221;Information Service.&#8211;&gt;&#8221;,&#8221;&lt;!&#8211; google_ad_section_end(name=default) &#8211;&gt;&#8221;,false,false)<br />
&#8216;注：其实没必要获取span的class并替换，后面对span的处理部分可直接去除<br />
&#8216;获取其中的span的class<br />
strspan=GetArray(rankcontent,&#8221;&lt;span class=&#8221;"&#8221;,&#8221;"&#8221;",false,false)<br />
response.write rankcontent&amp;&#8221;&lt;br&gt;&#8221;<br />
response.write strspan&amp;&#8221;&lt;br&gt;&#8221;<br />
&#8216;response.end<br />
If strspan&lt;&gt;&#8221;$False$&#8221; Then<br />
  aspan=split(strspan,&#8221;$Array$&#8221;)<br />
  <br />
  For i=0 To UBound(aspan)<br />
   &#8216;response.write &#8220;.&#8221;&amp;aspan(i)<br />
   &#8216;判定aspan(i)即span的class是否在alexacss中存在，如果存在，则需要将这个span和span中的数据去掉。<br />
   If InStr(strAlexaCss,&#8221;.&#8221;&amp;aspan(i))&gt;=1 Then<br />
    &#8217;response.write aspan(i)&amp;&#8221;&lt;br&gt;&#8221;<br />
    &#8217;response.end<br />
    &#8217;表示属性为none.需要替换掉。<br />
    rankcontent=ScriptHtml(rankcontent,&#8221;span&#8221;,2,aspan(i))<br />
   Else<br />
    rankcontent=ScriptHtml(rankcontent,&#8221;span&#8221;,1,aspan(i))<br />
   End if<br />
  Next<br />
  &#8217;替换上面少去掉的右边的span标签。<br />
  rankcontent=Replace(rankcontent,&#8221;&lt;/span&gt;&#8221;,&#8221;")</p>
<p>  <br />
End If<br />
If rankcontent=&#8221;$False$&#8221; Then<br />
  rankcontent=&#8221;No Data&#8221;<br />
End if<br />
getAlexaRank=Replace(rankcontent,&#8221;,&#8221;,&#8221;")</p>
<p>End Function</p>
<p>url=request.querystring(&#8220;url&#8221;)<br />
%&gt;</p>
<p>&lt;form name=&#8221;alexaform&#8221; method=get&gt;<br />
输入网址:&lt;input type=&#8221;" name=&#8221;url&#8221; value=&#8221;&lt;%=url%&gt;&#8221; size=40&gt; &lt;input type=&#8221;submit&#8221; value=&#8221;查 询&#8221;&gt;<br />
&lt;/form&gt;</p>
<p>&lt;%<br />
If url&lt;&gt;&#8221;" Then</p>
<p>response.write &#8220;您的网站在ALEXA的排名为：&#8221;<br />
response.flush<br />
rank=getAlexaRank(url)<br />
response.write rank<br />
End if<br />
</coolcode></p>
]]></content:encoded>
			<wfw:commentRss>http://www.baizoo.cn/archives/361.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

