ClassHTML.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:23k
源码类别:

搜索引擎

开发平台:

C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. /*
  5.       '       迅龙中文分类搜索引擎  v0.6
  6.       '
  7.       '        LGPL  许可发行
  8.       '
  9.       '       宁夏大学  张冬 康彩  zd4004@163.com
  10.       '
  11.       '
  12.  */
  13. namespace XunLong.HtmlClassLibrary
  14. {
  15.     public  class ClassHTML
  16.     {
  17.         /// <summary>
  18.         /// 清除某个 值 
  19.         /// </summary>
  20.         /// <param name="dat"></param>
  21.         /// <returns></returns>
  22.         private  string clearDat(string dat, string valc)
  23.         {
  24.             string du = dat;
  25.             //href="http://www.baidu.com/"
  26.             dat = dat.Trim();
  27.             if (dat.IndexOf(valc) != 0)
  28.             {
  29.                 return dat;
  30.             }
  31.             return "";
  32.             return "k";
  33.             int c1 = dat.IndexOf(""");
  34.             if (c1 + 1 >= dat.Length)
  35.             {
  36.                 goto HGH;
  37.             }
  38.             int c2 = dat.LastIndexOf(""");
  39.             if ((c1 <= -1) | (c2 <= -1) | (c1 >= c2))
  40.             {
  41.                 goto HGH;
  42.             }
  43.             // string s1 = dat.Substring(0, c1 + 1);
  44.             // string s2 = dat.Substring(c2, dat.Length - c2);
  45.             string s1 = dat.Substring(0, c1);
  46.             string s2 = dat.Substring(c2 + 1, dat.Length - c2 - 1);
  47.             //  dat = s1 + dat.Substring(c1 + 1, c2 - c1 - 1) + s2 + "rn" + s1 + "rn" + s2;
  48.             dat = s1 + s2;
  49.         HGH:
  50.             return dat;
  51.         }
  52.         /// <summary>
  53.         /// 该数据原始的url 得到该数据原始的Url  还原链接用
  54.         /// </summary>
  55.         private string SourceURL = "";
  56.         /// <summary>
  57.         /// 转换某个 值 
  58.         /// </summary>
  59.         /// <param name="dat">数据</param>
  60.         /// <param name="valc">属性</param>
  61.         /// <returns></returns>
  62.         private string RTclearDat(string dat, string valc)
  63.         {
  64.             // // href="" href="">http://www.chinahr.com/</
  65.             string du = dat;
  66.             //href="http://www.baidu.com/"
  67.             dat = dat.Trim();
  68.             if (dat.IndexOf(valc) != 0 | dat.IndexOf("=") == -1 )
  69.             {
  70.                 return dat;
  71.             }
  72.             // return "href=''";
  73.           //  return "k";
  74.             int c1 = dat.IndexOf(""");
  75.             if (c1 == -1)
  76.             {
  77.                 c1 = dat.IndexOf("'");
  78.             }
  79.             if (c1 + 1 >= dat.Length)
  80.             {
  81.                 goto HGH;
  82.             }
  83.             int c2 = dat.LastIndexOf(""");
  84.             if (c2 == -1)
  85.             {
  86.                 c2 = dat.IndexOf("'");   
  87.             }
  88.             //表示该属性不是包含在""中的
  89.             if (c1 == -1 )
  90.             {
  91.               //  c1 = dat.IndexOf("=")+1;
  92.                 dat = dat.Replace(valc + "=", valc + "="");
  93.                 c1 = dat.IndexOf(""");
  94.             }
  95.             if ( c2 == -1)
  96.             {
  97.                 dat = dat + """;
  98.                 c2 = dat.LastIndexOf(""");
  99.             }
  100.             if ((c1 <= -1) | (c2 <= -1) | (c1 >= c2))
  101.             {
  102.                 goto HGH;
  103.             }
  104.             // string s1 = dat.Substring(0, c1 + 1);
  105.             // string s2 = dat.Substring(c2, dat.Length - c2);
  106.             string s1 = dat.Substring(0, c1-1);
  107.             
  108.             string s2 = dat.Substring(c2 + 1, dat.Length - c2 - 1);
  109.             string s3 = dat.Substring(c1 + 1, c2 - c1 - 1);  //http://www.baidu.com/
  110.             //把半成品的url变为完整url
  111.             string  s3_2 = Data2Url(SourceURL, s3);
  112.             //// href="" href="">http://www.chinahr.com/</
  113.             dat = s1 + s2 +">"+s3_2+"<X" ;
  114.             if (s1 == null | s2 == null | s3_2.Length==0 )
  115.             {
  116.                 return du;
  117.             }
  118.             if(s3_2.IndexOf("http://")!=0)
  119.             {
  120.                 return du;
  121.             }
  122.             if (s3_2.IndexOf('<') >0   | s3_2.IndexOf('>') >0 )
  123.             {
  124.                 return du;
  125.             }
  126.             return dat;
  127.         HGH:
  128.             return du;
  129.         }
  130.         /// <summary>
  131.         /// 从本地化的rl 得到全局的url
  132.         /// </summary>
  133.         /// <param name="surl">本数据的url</param>
  134.         /// <param name="nurlt">半成品的url</param>
  135.         /// <returns>全局url</returns>
  136.         public  string Data2Url2(string surl, string nurlt)
  137.         {
  138.             if (nurlt.IndexOf('#') > -1 | nurlt.IndexOf("javascript:") > -1  | nurlt == null)
  139.             {
  140.                 return "";  //此为js  链接 无法处理
  141.             }
  142.             if (nurlt.IndexOf("mailto:") > -1)
  143.             {
  144.                 return nurlt;
  145.             }
  146.             if (surl.ToLower().IndexOf("http://") !=0 | surl.Length<11)
  147.             {
  148.                 // 源不是url 返回错误  ./http://bt.joyyang.com/thread.php?fid=2
  149.                 return "";
  150.             }
  151.             nurlt = nurlt.Trim();
  152.             nurlt = nurlt.Replace("r","");
  153.             nurlt = nurlt.Replace("n", "");
  154.             if(nurlt.Length==0 | nurlt=="." | nurlt=="/" | nurlt =="./")
  155.             {
  156.                return "";
  157.             }
  158.             //本身为完整url
  159.             if (nurlt.Trim().ToLower().IndexOf("http:") == 0)
  160.             {
  161.                 return nurlt.Trim();
  162.             }
  163.             if (nurlt.Trim().ToLower().IndexOf("./http:") == 0)
  164.             {
  165.                 return nurlt.Substring(2,nurlt.Length -2);
  166.             }
  167.             if (nurlt.Trim().ToLower().IndexOf("/http:") == 0)
  168.             {
  169.                 return nurlt.Substring(1, nurlt.Length - 1);
  170.             }
  171.             //去掉参数中的数据
  172.             if(surl.IndexOf('?')>-1)
  173.             {
  174.                 int a = surl.IndexOf('?');      
  175.                 surl = surl.Substring(0,a-1);      
  176.             }
  177.            string   jG = "../../../../../../../";
  178.             if (nurlt.IndexOf(jG) == 0)
  179.             {
  180.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  181.                 string[] xS_1 = surl.Split('/');
  182.                 string xs_w = "";
  183.                 for (int ii = 0; ii < xS_1.Length - 8; ii++)
  184.                 {
  185.                     xs_w = xs_w + xS_1[ii] + "/";
  186.                 }
  187.                 if (xs_w.Length == 0)
  188.                 {
  189.                     return ""; 
  190.                 }
  191.                 return xs_w + nurlt;
  192.             }
  193.             jG = "../../../../../../";
  194.             if (nurlt.IndexOf(jG) == 0)
  195.             {
  196.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  197.                 string[] xS_1 = surl.Split('/');
  198.                 string xs_w = "";
  199.                 for (int ii = 0; ii < xS_1.Length - 7; ii++)
  200.                 {
  201.                     xs_w = xs_w + xS_1[ii] + "/";
  202.                 }
  203.                 if (xs_w.Length == 0)
  204.                 {
  205.                     return "";
  206.                 }
  207.                 return xs_w + nurlt;
  208.             }
  209.             jG = "../../../../../";
  210.             if (nurlt.IndexOf(jG) == 0)
  211.             {
  212.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  213.                 string[] xS_1 = surl.Split('/');
  214.                 string xs_w = "";
  215.                 for (int ii = 0; ii < xS_1.Length - 6; ii++)
  216.                 {
  217.                     xs_w = xs_w + xS_1[ii] + "/";
  218.                 }
  219.                 if (xs_w.Length == 0)
  220.                 {
  221.                     return "";
  222.                 }
  223.                 return xs_w + nurlt;
  224.             }
  225.             jG = "../../../../";
  226.             if (nurlt.IndexOf(jG) == 0)
  227.             {
  228.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  229.                 string[] xS_1 = surl.Split('/');
  230.                 string xs_w = "";
  231.                 for (int ii = 0; ii < xS_1.Length - 5; ii++)
  232.                 {
  233.                     xs_w = xs_w + xS_1[ii] + "/";
  234.                 }
  235.                 if (xs_w.Length == 0)
  236.                 {
  237.                     return "";
  238.                 }
  239.                 return xs_w + nurlt;
  240.             }
  241.             jG = "../../../";
  242.             if (nurlt.IndexOf(jG) == 0)
  243.             {
  244.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  245.                 string[] xS_1 = surl.Split('/');
  246.                 string xs_w = "";
  247.                 for (int ii = 0; ii < xS_1.Length - 4; ii++)
  248.                 {
  249.                     xs_w = xs_w + xS_1[ii] + "/";
  250.                 }
  251.                 if (xs_w.Length == 0)
  252.                 {
  253.                     return "";
  254.                 }
  255.                 return xs_w + nurlt;
  256.             }
  257.             jG = "../../";
  258.             if (nurlt.IndexOf(jG) == 0)
  259.             {
  260.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  261.                 string[] xS_1 = surl.Split('/');
  262.                 string xs_w = "";
  263.                 for (int ii = 0; ii < xS_1.Length - 3; ii++)
  264.                 {
  265.                     xs_w = xs_w + xS_1[ii] + "/";
  266.                 }
  267.                 if (xs_w.Length == 0)
  268.                 {
  269.                     return "";
  270.                 }
  271.                 return xs_w + nurlt;
  272.             }
  273.             jG = "../";
  274.             if (nurlt.IndexOf(jG) == 0)
  275.             {
  276.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  277.                 string[] xS_1 = surl.Split('/');
  278.                 string xs_w = "";
  279.                 for (int ii = 0; ii < xS_1.Length - 2; ii++)
  280.                 {
  281.                     xs_w = xs_w + xS_1[ii]+"/";
  282.                 }
  283.                 if (xs_w.Length == 0)
  284.                 {
  285.                     return "";
  286.                 }
  287.                 return xs_w + nurlt;
  288.             }
  289.             jG = "./";
  290.             if (nurlt.IndexOf(jG) == 0)
  291.             {
  292.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  293.                 string[] xS_1 = surl.Split('/');
  294.                 string xs_w = "";
  295.                 for (int ii = 0; ii < xS_1.Length - 1; ii++)
  296.                 {
  297.                     xs_w = xs_w + xS_1[ii] + "/";
  298.                 }
  299.                 if (xs_w.Length == 0)
  300.                 {
  301.                     return "";
  302.                 }
  303.                 return  xs_w + nurlt;
  304.             }
  305.             jG = "/";
  306.             if (nurlt.IndexOf(jG) == 0)
  307.             {
  308.                 nurlt = nurlt.Substring(jG.Length, nurlt.Length - jG.Length);
  309.                 string[] xS_1 = surl.Split('/');
  310.                 string xs_w = "";
  311.                 for (int ii = 0; ii < xS_1.Length - 1; ii++)
  312.                 {
  313.                     xs_w = xs_w + xS_1[ii] + "/";
  314.                 }
  315.                 if (xs_w.Length == 0)
  316.                 {
  317.                     return "";
  318.                 }
  319.                 return xs_w + nurlt;
  320.             }
  321.            
  322.             if (nurlt.IndexOf('.') !=0 & nurlt.IndexOf('/')!=0)
  323.             {              
  324.                 string[] xS_1 = surl.Split('/');
  325.                 string xs_w = "";
  326.                 for (int ii = 0; ii < xS_1.Length - 1; ii++)
  327.                 {
  328.                     xs_w = xs_w + xS_1[ii] + "/";
  329.                 }
  330.                 if (xs_w.Length == 0)
  331.                 {
  332.                     return "";
  333.                 }
  334.                 return xs_w + nurlt;
  335.             }
  336.             return "";
  337.         }
  338.         /// <summary>
  339.         /// URL中的http链接进行分析,将相对路径转换为绝对路径
  340.         /// </summary>
  341.         /// <param name="surl"></param>
  342.         /// <param name="nurlt"></param>
  343.         /// <returns></returns>
  344.         public string Data2Url(string surl, string nurlt)
  345.         {
  346.             surl = surl.Trim();
  347.             nurlt = nurlt.Trim();
  348.             if (nurlt.IndexOf("http://") == 0)
  349.             {
  350.                 return nurlt;
  351.             }
  352.             //if (nurlt.IndexOf('#') > -1 | nurlt.IndexOf("javascript:") > -1 | nurlt.IndexOf("mailto:") > -1 | nurlt == null)
  353.             if (nurlt.IndexOf('#') > -1 | nurlt.IndexOf("javascript:") > -1  | nurlt == null)
  354.             {
  355.                 return "";  //此为js  链接 无法处理
  356.             }
  357.             if (surl.ToLower().IndexOf("http://") != 0 | surl.Length < 11)
  358.             {
  359.                 // 源不是url 返回错误  ./http://bt.joyyang.com/thread.php?fid=2
  360.                 return "";
  361.             }
  362.             nurlt = nurlt.Trim();
  363.             nurlt = nurlt.Replace("r", "");
  364.             nurlt = nurlt.Replace("n", "");
  365.             if (nurlt.Length == 0 | nurlt == "." | nurlt == "/" | nurlt == "./")
  366.             {
  367.                 return "";
  368.             }
  369.             try
  370.             {
  371.                 Uri baseUri = new Uri(surl);
  372.                 Uri absoluteUri = new Uri(baseUri, nurlt);
  373.                 return absoluteUri.ToString();   //   http://www.enet.com.cn/enews/test.html     
  374.             }
  375.             catch
  376.             {
  377.                 return "";
  378.             }
  379.         }
  380.         /// <summary>
  381.         /// 清除某个标签的属性值
  382.         /// </summary>
  383.         /// <param name="tagn"></param>
  384.         /// <param name="valc"></param>
  385.         /// <returns></returns>
  386.         private string clearOneTag(string data, string tagn, string valc)
  387.         {
  388.             int stN = 0;
  389.         XDX:
  390.             if (stN >= data.Length)
  391.             {
  392.                 goto XUI;
  393.             }
  394.             int a1 = data.IndexOf("<" + tagn, stN);  //123456  23   56
  395.             if (a1 + tagn.Length >= data.Length)
  396.             {
  397.                 goto XUI;
  398.             }
  399.             int a2 = data.IndexOf(">", a1 + tagn.Length + 1);
  400.             if ((a1 > -1) & (a2 > -1))
  401.             {
  402.                 string s1 = data.Substring(0, a1 + tagn.Length + 1);
  403.                 string s2 = data.Substring(a2, data.Length - a2);
  404.                 string ss = data.Substring(a1 + tagn.Length + 1, a2 - a1 - tagn.Length - 1);// href="http://www.baidu.com/"
  405.                 ss = ss.Trim();
  406.                 if (ss.IndexOf(" ") == -1)
  407.                 {
  408.                     ss = " " + clearDat(ss, valc);
  409.                 }
  410.                 else
  411.                 {
  412.                     string newX = "";
  413.                     string[] mcc = ss.Split(' ');
  414.                     foreach (string a in mcc)
  415.                     {
  416.                         if (a.Length > 0)
  417.                         {
  418.                             newX = newX + " " + clearDat(a, valc);
  419.                         }
  420.                     }
  421.                     ss = newX;
  422.                 }
  423.                 stN = s1.Length + ss.Length;
  424.                 data = s1 + ss + s2;
  425.                 goto XDX;
  426.             }
  427.         XUI: ;
  428.             return data;
  429.         }
  430.         // <a href="http://www.chinahr.com/"> <a href="></">
  431.         /// <summary>
  432.         /// 替换某个标签的属性值 为可以识别的数据 
  433.         /// </summary>
  434.         /// <param name="data">原始数据</param>
  435.         /// <param name="tagn">标签</param>
  436.         /// <param name="valc">属性项</param>
  437.         /// <returns></returns>
  438.         private  string RTOneTag2New(string data, string tagn, string valc)
  439.         {
  440.             int stN = 0;
  441.         XDX:
  442.             if (stN >= data.Length)
  443.             {
  444.                 goto XUI;
  445.             }
  446.             int a1 = data.IndexOf("<" + tagn, stN);  //123456  23   56
  447.             if (a1 + tagn.Length >= data.Length)
  448.             {
  449.                 goto XUI;
  450.             }
  451.             int a2 = data.IndexOf(">", a1 + tagn.Length + 1);
  452.             if ((a1 > -1) & (a2 > -1))
  453.             {
  454.                 string s1 = data.Substring(0, a1 + tagn.Length + 1);
  455.                 string s2 = data.Substring(a2, data.Length - a2);
  456.                 string ss = data.Substring(a1 + tagn.Length + 1, a2 - a1 - tagn.Length - 1);// href="http://www.baidu.com/"
  457.                 ss = ss.Trim();
  458.                 if (ss.IndexOf(" ") == -1)
  459.                 {
  460.                     ss = " " + clearDat(ss, valc);
  461.                 }
  462.                 else
  463.                 {
  464.                     string newX = "";
  465.                     string[] mcc = ss.Split(' ');
  466.                     foreach (string a in mcc)
  467.                     {
  468.                         if (a.Length > 0)
  469.                         {
  470.                             newX = newX + " " + RTclearDat(a, valc);
  471.                         }
  472.                     }
  473.                     ss = newX;
  474.                 }
  475.                 stN = s1.Length + ss.Length;
  476.                 data = s1 + ss + s2;
  477.                 goto XDX;
  478.             }
  479.         XUI: ;
  480.             return data;
  481.         }
  482.         /// <summary>
  483.         /// 去掉script
  484.         /// </summary>
  485.         /// <param name="idat"></param>
  486.         /// <returns></returns>
  487.         private  string clearSP(string idat)
  488.         {
  489.             string b1 = "<script";
  490.             string b2 = "</script>";
  491.         XX:
  492.             int a1 = idat.IndexOf(b1);
  493.             if (a1 + b1.Length >= idat.Length)
  494.             {
  495.                 return idat;
  496.             }
  497.             int a2 = idat.IndexOf(b2, a1 + b1.Length + 1);
  498.             if (a1 > -1 & a2 > -1)
  499.             {
  500.                 string s1 = idat.Substring(0, a1);
  501.                 string s2 = idat.Substring(a2 + b2.Length, idat.Length - a2 - b2.Length);
  502.                 idat = s1 + s2;
  503.             }
  504.             else
  505.             {
  506.                 return idat;
  507.             }
  508.             goto XX;
  509.             return idat;
  510.         }
  511.         /// <summary>
  512.         /// 清除掉数据中的URL  ...
  513.         /// </summary>
  514.         /// <param name="data"></param>
  515.         /// <returns></returns>
  516.         private  string clearHREFAdd(string data)
  517.         {
  518.             //  <script   </script>
  519.             //<input type="hidden" name="__VIEWSTATE" value="dDwtMikr" />
  520.             // <a href="http://www.chinahr.com/">
  521.             string dd = clearOneTag(data, "input", "value");
  522.             dd = clearOneTag(dd, "a", "href");
  523.    
  524.             dd = clearOneTag(dd, "img", "src");
  525.        //  dd = RTOneTag2New(data, "a", "href");
  526.        //  dd = RTOneTag2New(dd, "img", "src");
  527.             return dd;
  528.         }
  529.         /// <summary>
  530.         /// 编码转换
  531.         /// </summary>
  532.         /// <param name="data"></param>
  533.         /// <returns></returns>
  534.         public  string Str2Str(string data)
  535.         {
  536.             string gb2312info = string.Empty;
  537.             Encoding utf8 = Encoding.UTF8;
  538.             Encoding gb2312 = Encoding.GetEncoding("gb2312");
  539.             // Convert the string into a byte[].
  540.             byte[] unicodeBytes = utf8.GetBytes(data);
  541.             // Perform the conversion from one encoding to the other.
  542.             byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
  543.             // Convert the new byte[] into a char[] and then into a string.
  544.             // This is a slightly different approach to converting to illustrate
  545.             // the use of GetCharCount/GetChars.
  546.             char[] asciiChars = new char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
  547.             gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
  548.             gb2312info = new string(asciiChars);
  549.             return gb2312info;
  550.         }
  551.         /// <summary>
  552.         /// 清除数据  只取出 TITLE 和 BODY  中的数据
  553.         /// </summary>
  554.         /// <param name="data"></param>
  555.         /// <returns></returns>
  556.         private  string clearHTMLDB(string data)
  557.         {
  558.             data = data.ToLower();
  559.             data = clearSP(data);
  560.             data = data.Replace("b", "");
  561.             data = data.Replace("f", "");
  562.             data = data.Replace("n", "");
  563.             data = data.Replace("r", "");
  564.             data = data.Replace("&nbsp;", " ");
  565.             data = data.Replace("&gt;", " ");
  566.             data = data.Replace("&quot;", " ");
  567.             data = data.Replace("t", "");
  568.             data = data.Replace("v", "");
  569.             data = data.Replace("   ", "");
  570.             data = data.Replace("  ", "");
  571.             data = data.Replace("<br>", "");
  572.             data = data.Replace("&lt;", "");
  573.             // data = data.Replace("</a>", "");
  574.             // data = data.Replace("</td>", "");
  575.             data = data.Replace("<p>", "");
  576.             data = data.Replace("</p>", "");
  577.             //  data = data.Replace("</tr>", "");
  578.             //  data = data.Replace("<tr>", "");
  579.             //  data = data.Replace("</div>", "");
  580.             //  data = data.Replace("<div>", "");
  581.             data = data.Replace("<br />", "");
  582.             data = data.Replace("<br/>", "");
  583.             data = data.Replace("<dt>", "");
  584.             data = data.Replace("</dt>", "");
  585.             data = data.Replace("<dd>", "");
  586.             data = data.Replace("</dd>", "");
  587.             data = data.Replace("<ol>", "");
  588.             data = data.Replace("</ol>", "");
  589.             data = data.Replace("<li>", "");
  590.             data = data.Replace("</li>", "");
  591.             data = data.Replace("<ul>", "");
  592.             data = data.Replace("</ul>", "");
  593.             data = data.Replace("</b>", "");
  594.             data = data.Replace("<b>", "");
  595.             data = data.Replace("<i>", "");
  596.             data = data.Replace("</i>", "");
  597.             data = data.Replace("<s>", "");
  598.             data = data.Replace("</s>", "");
  599.             data = data.Replace("<nobr>", "");
  600.             //  data = data.Replace("</script>", " ");
  601.             data = data.Replace("</span>", "");
  602.             data = data.Replace("<span>", "");
  603.             // data = data.Replace("", " ");
  604.             //data = data.Replace("", " ");
  605.             // data = data.Replace("", " ");
  606.             // data = data.Replace("", " ");
  607.             //  data = data.Replace("", " ");
  608.             //  data = data.Replace("", " ");
  609.             //  data = data.Replace("", " ");
  610.             //  data = data.Replace("", " ");
  611.             //</textarea>
  612.             //<title>
  613.             //<body>
  614.            // string datas = data.ToLower();
  615.            
  616.             data = clearHREFAdd(data);
  617.             int a1 = data.IndexOf("<title>");
  618.             int a2 = data.IndexOf("</title>");
  619.             int a3 = data.IndexOf("<body");
  620.             int a4 = data.IndexOf("</body>");
  621.             int a5 = data.IndexOf(">", a3 + 1);
  622.             string data1 = "";
  623.             string data2 = "";
  624.             try
  625.             {
  626.                 if (a1 > 0 & a2 > 0 & a2 > a1)
  627.                 {
  628.                     data1 = data.Substring(a1 + 7, a2 - a1 - 7);
  629.                 }
  630.                 if (a3 > 0 & a5 > 0 & a5 > a3)
  631.                 {
  632.                     data2 = data.Substring(a5 + 1, a4 - a5 - 1);
  633.                 }
  634.                 data1 = data1.Replace("*", "#");
  635.                 data2 = data2.Replace("*", "#");
  636.                 return " <ZDKC0>" + data1 + "</ZDKC0> <ZDbody>" + data2 + "</ZDbody>";
  637.             }
  638.             catch
  639.             {
  640.                 return " <ZDKC0>" + "HTM" + "</ZDKC0> <ZDbody>" + data + "</ZDbody> ";
  641.             }
  642.         }
  643.         /// <summary>
  644.         /// HTML页面数据清理
  645.         /// </summary>
  646.         /// <param name="HTMLDATA">HTML数据</param>
  647.         /// <returns>清理后的HTML数据</returns>
  648.         public  string HTML2CLEAR(string HTMLDATA,string urlIt)
  649.         {
  650.             //得到该数据原始的Url  还原链接用
  651.             SourceURL = urlIt;
  652.             return clearHTMLDB(HTMLDATA);
  653.         }
  654.     }
  655. }