今日发现的:一个类似Google Baidu的搜索引擎[C#]代码比较简单

里面实现很简单,当然只能算是一个演示版本吧!不可能有Google Baidu的那么强大。有爬虫代码 Web代码

主要的代码分析如下:


/// <summary>
       /// 取得该URL网页内容数据.调用后面的分析函数。
       /// </summary>
       private void GetHTML() {
           if (_HTMLData != null) return;
           Byte[] BinData;
           try {
               WebClient wc = new WebClient();
               BinData = wc.DownloadData(_URL);
               _HTMLData = Encoding.Default.GetString(BinData);
               wc.Dispose();
           }
           catch (Exception) { Console.WriteLine("Can not read this page!"); return; }
           GetTitle();
           GetMeta();
           GetLink();
           if (OnFinishAnalyze != null) { OnFinishAnalyze(this, new EventArgs()); }
           Console.WriteLine("Finish!");
           this.Dispose();
       }
       /// <summary>
       /// 分析URL里的Title
       /// </summary>
       private void GetTitle() {
           if (_Title != null) return;

           //"(<title>([\S\s]+)</title>)"  提取网页标题的正则表达式
           Regex reg = new Regex(@"<title>([\S\s]+)</title>", RegexOptions.IgnoreCase);
           try{
               Match m = reg.Matches(_HTMLData)[0];
               if (m.Success) _Title = m.Groups[1].Captures[0].ToString();
           }
           catch (Exception) { _Title = ""; }
           
       }
       /// <summary>
       /// 解析Html代码里的超链接.获得子URL集.
       /// </summary>
       private void GetLink() {
           if (_ChildURLSet != null) return;
           ArrayList urlset=new ArrayList();
           //"<a[\\s]+href=\"?([\\S]+)\"?[^ <>]+>([^ <>]+)</a>" //提取超链接的正则表达式
           Regex reg = new Regex("<a[\\s]+href=\"?([\\S]+)\"?[^<>]+>([^<>]+?)</a>", RegexOptions.IgnoreCase);
           MatchCollection mm;
           try { mm = reg.Matches(_HTMLData); } catch (Exception) { return; }
           urlset.Add(new QLinkURL(this._URL, "", this._MetaWords,this._Title));
           foreach (Match m in mm) {
               urlset.Add(new QLinkURL(URLJoin(m.Groups[1].Captures[0].ToString()), m.Groups[2].Captures[0].ToString().Replace(" ",""), ""));
           }
           _ChildURLSet = (QLinkURL[])urlset.ToArray(System.Type.GetType("QSplider.QLinkURL"));
       }
       private void GetMeta() {
           if (_MetaWords != null) return;

           //<meta[\S\s]+name="?keywords"?[\S\s]+content="?([\S\s]+)"?[\S\s]+></meta>
           Regex reg = new Regex("<meta[\\S\\s]+name=\"?keywords\"?[\\S\\s]+content=\"?([\\S\\s]+)\"?[\\S\\s]+></meta>", RegexOptions.IgnoreCase);
           try{
               Match m = reg.Matches(_HTMLData)[0];
               if (m.Success) _MetaWords = m.Groups[1].Captures[0].ToString();
           }catch(Exception){ _MetaWords = "";}
       }
       public void Dispose() {
           this._HTMLData = null;
           this._ChildURLSet = null;
           this._MetaWords = null;
           this._Title = null;
       }
       public string URLJoin(string s2) {
           s2=s2.Trim(_SplitChar);
           if (s2.StartsWith("http://", true,null)) return s2;
           if(s2.StartsWith("/"))  s2.Substring(1,s2.Length-1);
           if (_URL.LastIndexOf("/") > 9) _URL = _URL.Substring(0,_URL.LastIndexOf("/"));
           return (_URL + "/" + s2).Trim(_SplitChar);
       }


主要工作的函数就是上面的几个了!这是一个爬虫的代码!

当然还有数据库的,还有web的!
下载地址如下:
http://www.libing.net.cn/attachment.php?f=attachment%2F%2Fqsearch.splider.zip
http://www.libing.net.cn/attachment.php?f=attachment%2F%2Fqsearch.website.zip
http://59.70.157.222/QSearch.WebSite.zip

转载于:https://www.cnblogs.com/wbbady/archive/2007/07/10/812006.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值