[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>
<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;
}
}
}
{
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;
}
}
}
希望对大家所有帮助
决不做一个程序代码的写手.