spider的 c#实现

原创 2004年08月17日 16:40:00

以前看到很多关于spider , crawler , robot的的一些介绍, 闲着无聊 自己就try ,try ; 完美实现 可能无法完称;

spider 的实现最基本的几个方法;

1:根据url地址取得网页内容;

2:根据网页内容取得它所包含的所有url地址;

一下为两个方法;

-----------------------------------------------------

//取得网页内容;
  public static string getHtmlContent(string url)
  {
   string resultStr = string.Empty;
   System.Net.HttpWebRequest hreq = null;
   System.Net.HttpWebResponse hrep = null;
   Stream stream = null ;
   StreamReader sReader = null ;
   try
   {
    hreq = (HttpWebRequest)WebRequest.Create(url);
    hrep = (HttpWebResponse)hreq.GetResponse();
    stream = hrep.GetResponseStream();
    sReader = new StreamReader(stream,System.Text.Encoding.Default);
    resultStr = sReader.ReadToEnd();
   }
   finally
   {
    sReader.Close();
    stream.Close();
    hrep.Close();
   }
   return resultStr;

  }

2://取得page中的超连接地址;
  public static ArrayList getHttpUrlList(string page,string curUrl, int index_s)
  {
   ArrayList urlList= new ArrayList(25) ;
   Regex r;
   string urlStr = string.Empty;
   try
   {
    r = new Regex("(?<=//s+href//s*=)//s*(?:(?<url>/"//w*/")|(?<url>[^>//s]*))");
    MatchCollection mc1 = r.Matches(page);
    urlList.Clear();
    foreach(Match m1 in mc1)
    {
     urlStr = CompleteUrl(m1.Value,curUrl);
     if(!urlList.Contains(urlStr)) urlList.Add(urlStr);
    
    }
   }
   catch(Exception e)
   { MessageBox.Show("进行正则匹配时出错"+e.Message); return null ;}
   return urlList;
  }
//标准url地址;
  private static string CompleteUrl(string oldUrl,string curUrl)
  {
   //1
   oldUrl = oldUrl.Replace("/"","").ToLower();
   oldUrl = oldUrl.Replace("'","");
   //2
   if(!oldUrl.ToLower().StartsWith("http:"))
    oldUrl = curUrl+"/"+oldUrl;
   //3
   oldUrl = oldUrl.Replace("http://","");
   oldUrl = oldUrl.Replace("http://","");
   oldUrl = oldUrl.Trim();
   
   return oldUrl;
  
  }

----------------------------------------------------------

存在疑问的地方:

1: StreamReader(stream,System.Text.Encoding.Default); 在取得网页流数据后,用了Encoding.Default来解码(相当与本地的gb2312) ,但碰到big5等其它字符集时就会乱码; 现在还没找到好的解决方法;

2:url的正则表达式,经测试.net帮助中给出的不太理想,因此, 我进行了修改;还需要测试;

可扩展Spider的设计与实现

  • 2010年09月06日 11:15
  • 1MB
  • 下载

spider

  • 2008年03月18日 14:49
  • 71KB
  • 下载

webspider

  • 2008年02月14日 04:48
  • 53KB
  • 下载

基于C#的多线程的网页抓取

  • 2014年02月13日 16:29
  • 32KB
  • 下载

网络爬虫(Spider)Java实现原理

 “网络蜘蛛”或者说“网络爬虫”,是一种能访问网站并跟踪链接的程序,通过它,可快速地画出一个网站所包含的网页地图信息。本文主要讲述如何使用Java编程来构建一个“蜘蛛”,我们会先以一个可复用的蜘蛛类包...
  • wuhailin2005
  • wuhailin2005
  • 2009-01-08 18:51:00
  • 10873

网络爬虫(spider)程序的编程实现

随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,百度,Yahoo!和Go...
  • bigtang5
  • bigtang5
  • 2007-09-18 12:20:00
  • 7825

Python Spider, Web Crawler

项目中需要写个简单的spider,实现对目录型网页(hao123,9991等等)提取域名功能;需要一级域名 简单高效程序,肯定不放过python快速的开发了; 于是google、googl...
  • oMingZi12345678
  • oMingZi12345678
  • 2013-07-23 21:31:12
  • 1748

使用python多线程实现一个简单spider

使用python多线程实现一个简单spider 老习惯,先看看别人的工作。推荐看看 我的知识库(1)--Java 搜索引擎的实现— 网络爬虫 文章把相关概念讲的很详细了。 老样子,我也...
  • oMingZi12345678
  • oMingZi12345678
  • 2013-07-23 21:19:25
  • 1018

Spider 之 爬虫 基本工作原理

网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。 一、网络爬虫的基本结构及工作流程...
  • u013630349
  • u013630349
  • 2016-03-21 20:36:00
  • 3273

spider-定向抓取

网络爬虫(web crawler)又称为网络蜘蛛(web spider)是一段计算机程序,它从互联网上按照一定的逻辑和算法抓取和下载互联网的网页,是搜索引擎的一个重要组成部分。一般的爬虫从一部分sta...
  • wenyusuran
  • wenyusuran
  • 2014-11-04 10:14:46
  • 635
收藏助手
不良信息举报
您举报文章:spider的 c#实现
举报原因:
原因补充:

(最多只允许输入30个字)