我们在做关于网络的编程时经常要获取特定页面中的所有网址链接,下面的方法实现这个目地
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如有转载请注明