[C#]搜索引擎收录统计by_WebRequest

index.htm:

<!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>
    
<title>搜索引擎收录各反向链接查询</title>
   
<script type="text/javascript" src="/Scripts/jquery-1.3.2.min.js"></script>
   
<script type="text/javascript">
    
var EngineList = [
                      {Name:
"谷歌(Google)",Url:"http://www.google.cn/search?q=",Reg:"约\\s?\\<b\\>([0-9-,]*?)\\<\\/b\\>\\s?条",C1:"site",C2:"link"},
                      {Name:
"百度(Baidu)",Url:"http://www.baidu.com/s?wd=",Reg:"找到相关网页[约]?([0-9-,]*?)篇",C1:"site",C2:"link"},
                      {Name:
"搜搜(soso)",Url:"http://www.soso.com/q?w=",Reg:"搜索到[约]?([0-9-,]*?)项结果",C1:"site",C2:"link"},
                      {Name:
"有道(Youdao)",Url:"http://www.youdao.com/search?q=",Reg:"\\>共[约]?(.*?)条结果\\<\\/span\\>",C1:"site",C2:"inlink",Encode:"utf-8"},
                      {Name:
"搜狗(Sogou)",Url:"http://www.sogou.com/web?query=",Reg:"\\<\\!\\-\\-resultbarnum\\:([0-9-,]*?)\\-\\-\\>",C1:"site",C2:"link"},
                      {Name:
"雅虎(Yahoo)",Url:"http://search.cn.yahoo.com/search?p=",Reg:"找到相关网页[约]?([0-9-,]*?)条",C1:"site",C2:"link",Encode:"utf-8"}
                      ];
    $(document).ready(
function()
                               {
                                   
for(var i=0;i<EngineList.length;i++)
                                   {
                                       
var eng = EngineList[i];
                                       
var strHtml = "<tr>";
                                       strHtml
+="<td>"+eng.Name+"</td>";
                                       strHtml
+="<td>--</td>";
                                       strHtml
+="<td>--</td>";
                                       strHtml
+="</tr>";
                                       $(
"#CountTable").append(strHtml);
                                   }
                                   
if($("#site").val() !="")
                                   {
                                       GetCount(
0);
                                   }
                               });
    
function GetCount(index)
    {
        
if(EngineList.length > index)
        {
            
var obj = EngineList[index];
            
var site = $("#site").val();
            
if(site == "")
            {
                alert(
"网站地址不正确!");
                
return;
            }
            
if(site.indexOf("http://">=0)
            {
                site 
= site.replace(/http\:\/\//ig,"");
            }
            
if(site.indexOf("."< 0)
            {
                site 
+=".com";
            }
            $(
"#site").val(site);
            
var url = obj.Url+encodeURIComponent(obj.C1+":"+site);
            
var url2 = obj.Url+encodeURIComponent(obj.C2+":"+site);
            $(
"#CountTable tr:eq("+(index+1)+") td:eq(1)").html("正在查询");
            $.get(
"/Tools.ashx",{"do":"Site",Url:url,Reg:obj.Reg,Position:(index+1),TypeIndex:1,Encode:obj.Encode},function(data)
                                                                                 {
                                                                                     
var str ="<a href=\""+url+"\" target=\"_blank\">"+data+"</a>";
                                                                                     $(
"#CountTable tr:eq("+(index+1)+") td:eq(1)").html(str);
                                                                                 },
"text");
            $(
"#CountTable tr:eq("+(index+1)+") td:eq(2)").html("正在查询");
            $.get(
"/Tools.ashx",{"do":"Site",Url:url2,Reg:obj.Reg,Position:(index+1),TypeIndex:2,Encode:obj.Encode},function(data)
                                                                                 {
                                                                                     
var str ="<a href=\""+url2+"\" target=\"_blank\">"+data+"</a>";
                                                                                     $(
"#CountTable tr:eq("+(index+1)+") td:eq(2)").html(str);
                                                                                 },
"text");
            setTimeout(
"GetCount("+(index+1)+")",500);
        }
    }
    $(document).ajaxError(
function(event,xmlHttp,sol)
                                   {
                                       
var str ="<a href=\""+url+"\" target=\"_blank\" style='color:red'>Err</a>";
                                       $(
"#CountTable tr:eq("+(sol.data.Ponsition)+") td:eq("+sol.data.TypeIndex+")").html(str);
                                   });
    
</script>
</head>
<body>
<div>
网站地址:
<input type="text" id="site" value="http://www.fute53.com/"/> <input type="button" onclick="GetCount(0)" value="查询"/>
</div>
<table width="500" border="1" align="center" cellpadding="5" cellspacing="0" style="text-align:center;" id="CountTable">
  
<tr>
    
<td>搜索引擎</td>
    
<td>收录页面数</td>
    
<td>反向链接数</td>
  
</tr>
</table>

</body>
</html>

 

后台代码:Tools.ashx

 

    public class Tools : IHttpHandler
    {
        HttpRequest Request 
= HttpContext.Current.Request;
        HttpResponse Response 
= HttpContext.Current.Response;
        
public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType 
= "appliction/json";
            
string act = Request["do"];
            
switch (act)
            {
                
case "Site":
                    Response.Write(GetSiteCount(Request[
"Url"]));
                    
break;
                    
//......
            }
        }
        
public string GetSiteCount(string url)
        {
            
if (String.IsNullOrEmpty(url))
            {
                
return "--";
            }
            
if (!url.StartsWith("http://")) url = "http://" + url;
            
try
            {
                
string encode = "GB2312";
                
if (Request["Encode"==("utf-8")) encode = "utf-8";
                HttpWebRequest hr 
= (HttpWebRequest)WebRequest.Create(url);
                StreamReader sr 
= new StreamReader(hr.GetResponse().GetResponseStream(),Encoding.GetEncoding(encode));
                
                
string context = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                
if (String.IsNullOrEmpty(context)) return "--";
                
string regPattern = Request["Reg"];
                
if (String.IsNullOrEmpty(regPattern)) return "--";
                Regex reg 
= new Regex(regPattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
                
if (reg.IsMatch(context))
                {
                    
return reg.Match(context).Groups[1].Value;
                }
                
else
                {
                    
return "0";
                }
            }
            
catch { }
            
return "--"
        }
        
public bool IsReusable
        {
            
get
            {
                
return false;
            }
        }
    }

 

 

希望对大家所有帮助

posted @ 2010-01-21 15:53  竹子小毅  阅读(475)  评论(0编辑  收藏  举报