得到页面中的所有链接函数

这个函数是以前做搜索引擎的时候遇见过的, 

x1代表的是当前文档的http地址,而x2代表的是页面中的链接地址

 

ContractedBlock.gif ExpandedBlockStart.gif Code
public string GetUrl(string x1,string x2)
{
           
bool panduan = false;
   

           
if (x1.IndexOf("http://"== -1)
           { x1 
= "http://" + x1;}

           
if (x2.IndexOf("http://"!= -1)
           {
               panduan 
= true;
           }



            
if (x2.IndexOf("/"== 0 && panduan==false)
             {
                 panduan 
= true;
                   
if (x1.IndexOf("/"7!= -1)
                   {
                       x1 
= x1.Substring(0, x1.IndexOf("/"7));
                 
                          x2 
= x1 +     x2;
                                      }
                   
else
                   {
                       x2 
= x1 + x2;
                   }
             }     
                       
           
              
if (x2.IndexOf("../"== 0 && panduan==false)
               {
                   panduan 
= true;
                       x2 
= x2.Substring(3);
                   
                       
if (x1.IndexOf("/"7!= -1)
                       {
                           x1 
= x1.Substring(0, x1.IndexOf("/"7));

                           x2 
= x1 + "/" + x2;

                       }
                       
else
                       {

                           x2 
= x1 + x2;

                       }          
               }

                   
               
if (x2.IndexOf("/"!= 0 && x2.IndexOf("../"!= 0 && panduan==false)
               {

                                   x1 
= x1.Substring(0, x1.LastIndexOf("/"));
                       x2 
= x1 +"/"+ x2;

                           }

       
                 
return x2;




 

"http://www.cnblogs.com/ 这样的没有再判断,一般也用不着。"

 如此之后返回的是新链接的绝对地址

 

 

如果要得到页面中的所有链接,可以使用下面的代码 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
string strRegex = @"((href|HREF|src|SRC)[ ]*=[ ]*[""'][^""'#>]+[""'])|((href|HREF|src|SRC)[ ]*=[ ]*[\S]+)";
                
// @"(href|HREF|src|SRC)[ ]*=[ ]*[""'][^""'#>]+[""']";


             Regex r 
= new Regex(strRegex, RegexOptions.IgnoreCase);
            MatchCollection m 
= r.Matches(htmlPage);

 

可以得到href.src的所有链接,包括带双引号,单引号,没有引号的链接,使用MTracer.exe测试通过

 

转载于:https://www.cnblogs.com/ysuhy/archive/2008/08/31/1280442.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值