想做要一个asp.net的爬虫源代码,能够生成sitemap.xml和 sitemap.html ,请大家帮忙!!!!
以前写过一个作弊程序【嘿嘿,不好意思】,希望对你有所帮助。
下面是主要的代码:
//根据URL获取网页的源代码
private void GetSource(string url)
{
httpSource = "";
try
{
WebClient webClient = new WebClient();
//获取包含页面源代码的字符串
Stream stream;
//if (sites.Count > 0)
//{
// num = sites.Count;
// string site=sites[(new Random()).Next(0, num)];
// stream = webClient.OpenRead(site);
// header = site.Substring(0,site.LastIndexOf("/")+1);
//}
//else
{
stream = webClient.OpenRead(url);
header = url.Substring(0, url.LastIndexOf("/") + 1);
}
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
httpSource = sr.ReadToEnd();
sr.Close();
stream.Close();
}
catch// (Exception err)
{
//MessageBox.Show(err.Message);
return;
}
}
//处理上面的函数返回的网页源代码,使用正则表达式提取其中的链接地址:
private void GetSitesFromSource(string source)
{
string regexPattern = @"(href\s*=\s*)[""''](?<url>[^''""]+)[""'']";
//@"<a\s(.*?)+href=(\"")?(.+?)(\"")?\s*(.*?)>(.+?)</a>";
Regex regex = new Regex(regexPattern, RegexOptions.IgnoreCase);
Match match = regex.Match(httpSource);
siteList.Clear();
while (match.Success)
{
string temp = match.Groups["url"].Value;
if (!temp.EndsWith(".ico") && !temp.EndsWith(".jpg") && !temp.EndsWith(".png") && !temp.EndsWith(".gif") && !temp.EndsWith(".css") && !temp.EndsWith(".js") && !temp.EndsWith("#") && !(temp.IndexOf("+") > 0) && !temp.StartsWith("javascript") && !temp.StartsWith("mailto"))
{
if (!temp.StartsWith("http:"))
{
if (temp.StartsWith("../"))
{
temp = @"http://henu.2008.163.com/" + temp.Substring(3);
}
else
{
temp = header + temp;
}
}
if (!siteList.Contains(temp))
{ siteList.Add(temp); }
//listBox1.Items.Add(temp);
}
match = match.NextMatch();
}
}