关于取得网页里面所有超链接的问题
meCAD 2006-08-11 11:25:56 我要做的是一个搜索Email,电话号码,手机号码,名称等信息的程序.
头一步要做的就是从第一张网页里面分析出所有的超链接,然后一一根据这些链接爬行下去.
现在问题的问题是:
办法1.是使用idhttp来下载一个页面,使用正则表达式来查找出href.
办法2.用下面这段代码来获得.
int hrefn = 0;
ListBox1->Clear();
RichEdit1->Clear();
if( CppWebBrowser1->ReadyState!=4)
{
ShowMessage("not Completed");
return ;
}
IHTMLDocument2* pDocument;
IHTMLElementCollection* p;
IHTMLElement* link ;
long len ;
HRESULT hr ;
//获得IHTMLDocument2接口
hr = CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(void**)&pDocument);
if( !SUCCEEDED(hr) )
{
ShowMessage("hehe") ;
return ;
}
//得到Document中所有的Element
pDocument->get_all(&p);
pDocument->Release() ;
p->get_length(&len) ;
for(int i=0;i<len;i++)
{
IDispatch* pDisp ;
Variant j ;
//得到Collection中的第i个Element
p->item((Variant)i,j,&pDisp) ;
hr= pDisp->QueryInterface(IID_IHTMLElement,(void**)&link) ;
if( !SUCCEEDED(hr) )
return ;
pDisp->Release() ;
wchar_t* name ;
//提取tag属性
link->get_tagName(&name);
RichEdit1->Lines->Add((AnsiString)name);
if( wcscmp(name,L"A")==0 )
{
VARIANT v ;
//提取href属性
link->getAttribute(L"HREF",0,&v) ;
wchar_t* va = v.bstrVal ;
AnsiString str = (AnsiString)va ;
ListBox1->Items->Add(str);
hrefn = hrefn + 1;
}
link->Release() ;
}
ListBox1->Items->Add("共有"+IntToStr(hrefn)+"条超链接");
这段代码能获得超链接,只是我对这段代码是一知半解
现在有以下几个个问题