.net代码获取网站Alexa排名

时间:2007/1/27 14:03:17      阅读:7264          
      网上找到的“利用XML技术获取域名的世界排名数字”已经是很旧的代码了,经俺翻新做成.NET的代码,提给大家共享吧。

演示地址:http://test.web3.cn/GetUrlInfo.aspx

GetUrlInfo.aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="GetUrlInfo.aspx.vb" Inherits="_GetUrlInfo" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Alexa世界排名查询——www.web3.cn</title>
<style type="text/css">
body
{
margin
: 10px;
color
: #000;
line-height
:150%;
background
: #FFF;
font-family
: Arial,宋体,Arial,Sans-serif;
font-size
: 15px;
text-align
:left;
}

</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>网站Alexa排名</h3>
请输入需要查询的网址:http://
<asp:TextBox ID="txtUrl" runat="server"></asp:TextBox>&nbsp;
<asp:Button ID="BtnS" runat="server" OnClick="BtnS_Click" Text="查 询" />
<br />
<br />
站点(
<asp:Literal ID="LtlUrl" runat="server"></asp:Literal>)信息查询结果:<br /><br />
<strong>Alexa世界排名:</strong><asp:Label ID="Lbl2" runat="server"></asp:Label><br /><br /><br /><br />
<span style="font-size:12px">(注:如Alexa服务器连接速度较慢,查询数据无法显示,请重新点击“查询”)</span><br />
</div>
</form>
</body>
</html>
 
GetUrlInfo.aspx.vb:
1Imports System.Net
2Partial Class _GetUrlInfo
3 Inherits System.Web.UI.Page
4
5 Protected Sub BtnS_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnS.Click
6 'Alexa世界排名
7 Lbl2.Text = AlexaRank(txtUrl.Text)
8 LtlUrl.Text = txtUrl.Text
9 End Sub

10
11 Function AlexaRank(ByVal Url As String) As String
12 Dim AlexaUrl, RpStr, TempStr As String
13 Dim x, n As Integer
14 AlexaUrl = "http://www.alexa.com/data/details/traffic_details?q=&url=" & Url
15 RpStr = "<img alt="""" border=""0"" width=""1"" height=""10"" src=""http://client.alexa.com/common/images/shim.gif"">" '此行不准改动
16 Try
17 Dim wc As Net.WebClient = New Net.WebClient()
18 wc.Credentials = CredentialCache.DefaultCredentials
19 Dim pageData() As Byte = wc.DownloadData(AlexaUrl)
20 TempStr = Encoding.Default.GetString(pageData)
21 n = InStr(TempStr, RpStr) - 1
22 TempStr = Left(TempStr, n)
23 TempStr = StrReverse(TempStr)
24 x = InStr(TempStr, "<>--") - 0
25 TempStr = Left(TempStr, x)
26 TempStr = StrReverse(TempStr)
27 wc.Dispose()
28 Catch ex As Exception
29 Return ""
30 End Try
31 Return TempStr
32 End Function

33End Class

34

在经过以上处理后可以得到最后的数据了,在html模式下可以正常显示排名数据了,实际上得到的不是真正的数据,还有很多乱七八糟的html代码,只是在html模式下不显示出来而已,这可能也是Alexa处理过的吧,每次得到的html代码都不一样,必须要处理掉才行,得到的代码如下:
<bbip>9</bbip><eEy12><Today><Page Views per user:>4</Page Views per user:></Today></eEy12><Page Views per user:><zxja><pyp>5</pyp></zxja></Page Views per user:>,<Reach per><gis@5r><Rank>1</Rank></gis@5r></Reach per><gis@5r><phzrm>0</phzrm></gis@5r>1

其实我们真正要的是945,101,这个才是我们要的数据,下面我们用一个正则函数过滤掉这些无用的字符:
Function CleanInput(ByVal strIn As String) As String
' 用空字符替换掉其它无用的字符
Return Regex.Replace(strIn, "<[^>]*>", "")
End Function

好了,经过CleanInput函数处理后我们得到的才是干净的数据。
评论
  • Re:.net代码获取网站Alexa排名  (2007/1/29 1:22:48) by ensonfly 
    看了这篇文章,我得来灵感,也整了一个 .net代码获取网站ChinaRank排名
     
    URL:
    http://www.yuayu.com/blogview.asp?logID=522
  • Re:.net代码获取网站Alexa排名  (2007/3/19 19:24:24) by 踢西 
    最近Alexa又使用了新的fromCharCode 方法进行输出数据,俺就不多说了,提供一些代码给大家参考一下:
    fromCharCode 方法
    说明:从一些 Unicode 字符值中返回一个字符串。
    示例:
    <script language="javascript">document.write("fromCharCode 方法<br>输入一个数字:<input type='text' id='ipt' size='10' value='90'> <input type='button' value='点我一下' onclick='alert(String.fromCharCode(document.getElementById(\"ipt\").value))'>")</script>


    charCodeAt 方法

    说明:charCodeAt(index : Number)返回一个整数,该整数表示 String 对象中指定位置处的字符的 Unicode 编码。一个字符串中的第一个字符位于索引位置 0,第二个字符位于索引位置 1,依此类推。如果指定 index 没有字符,将返回 NaN。
    示例:

    <script language="javascript">document.write("charCodeAt 方法<br>输入一个字符:<input type='text' id='ipt' size='10' value='a'> <input type='button' value='点我一下' onclick='alert(document.getElementById(\"ipt\").value.charCodeAt(0))'>")</script>
  • Re:.net代码获取网站Alexa排名  (2007/3/19 21:33:45) by 踢西 
    刚才没事做又看了一下Alexa排名的新方法,又写了个简单的过滤函数据提取最新排名:
    Function StrOut(ByVal Str As String) As String

    Dim StrOutArry1 As Array = Split(Str, ",")
    Dim StrOut1 As Integer = 0
    Dim StrOut2 As String = ""

    Dim i, j As Integer
    For i = LBound(StrOutArry1) To UBound(StrOutArry1)
    Dim StrOutArry2 As Array = Split(StrOutArry1(i), "+")
    StrOut1
    = 0
    For j = LBound(StrOutArry2) To UBound(StrOutArry2)
    StrOut1
    += StrOutArry2(j)
    Next
    StrOut2
    &= Chr(StrOut1)
    Next
    Return StrOut2
    End Function
    这样得到的数据是:
    424<Span></Span>,<SPaN></SPaN>9<span></span>9<SPaN></SPaN>9<br>
    再使用CleanInput函数过滤掉无用的html字符即可,上面的东西写得简单,高手的朋友可以自己优化一下吧。
  • Re:.net代码获取网站Alexa排名  (2007/5/11 11:43:16) by hy007 
    感谢站长
标 题:
 
姓 名:
 
主 页:

验证码:

评论:
 

Because of the cache,you may see your comments several minutes later.