如何获取网页中所有的链接

 我们在做关于网络的编程时经常要获取特定页面中的所有网址链接,下面的方法实现这个目地

int CClick::CaseIgnoreStrStr(char *srcstr,char *substr)  
{  
 char *buffer,*p,*substrupper;  
   
 buffer = _strupr(_strdup(srcstr));  
 substrupper=_strupr(_strdup(substr));  
   
 p=strstr(buffer,substrupper);  
 if(p==NULL)  
  return -1;  
 else  
  return p-buffer;  
 }

int CClick::ParseUrlFrom(char *line,char *url)  
{  
 char *p1,*p2;  
 char tmp[1024];  
 int i=0,index=0;  
 memset(tmp,0,sizeof(tmp));  
   
 p1=NULL;
 p2=NULL;
 index=CaseIgnoreStrStr(line,"HREF");  
 if(index==-1)  
  return -1;  
   
 p1=line+index;  
 p1=p1+4; 
 index=CaseIgnoreStrStr(p1,   "HTTP://");  
 if(index==-1)  
  return -1;  
 else  
 {  
  p2=p1+index;  
  while((*p2!='"')&&(*p2!=' ')&&(*p2!='>')&&(*p2!=0x0a)  
   &&(*p2!=0x0d)&&(*p2!=0)&&(*p2!='#')&&(*p2!='/''))  
  {  
   *url=*p2;  
   url++;  
   p2++;  
  }  
 }  
 return 0;  
}


CStringArray *CClick::GetClickURL(CString url)
{
 CInternetSession mysession;
 CStringArray *urlarr=new CStringArray[30];
 CHttpFile *pFile=(CHttpFile*)mysession.OpenURL(url);
 
 char buf[1024],tempUrl[1024];
 int n;
 while((n=pFile->Read(buf,1024))>0)
 {
  memset(tempUrl,0,sizeof(tempUrl));
  if(ParseUrlFrom(buf,tempUrl)==0)
   urlarr->Add(tempUrl);
 }

 pFile->Close();
 return urlarr;
}

本文原出处www.2008tnjj.com如有转载请注明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值