如何获取页面的内容?

HHunter 2002-10-30 09:23:32
我想用程序获取所见到页面的html源码内容,应该如何做?
我用CB中的http控件的Get方法,只能获取单页面的内容,
当页面有多个框体时就不行了,比如我想获取
http://expert.csdn.net/expert/forum.asp的内容,结果只是
得到

<HTML>
<HEAD>
<META NAME="Robots" CONTENT="noindex">
<META content="text/html;charset=gb2312" http-equiv="Content-Type">
<TITLE>欢迎来到CSDN新版论坛</TITLE>
<script src="/Expert/style/get_css.js"></script>
<SCRIPT LANGUAGE="JavaScript">
// this page should never load inside of another frame
if (top.location != self.location)
{
top.location = self.location;
}

function InitSync()
{
if( "object" == typeof( top.deeptree ) && "unknown" == typeof( top.deeptree.Sync ) )
{
top.deeptree.Sync();
}
}
</SCRIPT>
</HEAD>

<FRAMESET onload="InitSync();" rows="81,*" border="1" FRAMESPACING="0" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0">
<FRAME name="fraToolbar" src="/Top_Expert_Forum.htm?csdnstyle=" scrolling="no" border="0" frameborder="no" noresize TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" ></FRAME>

<FRAMESET name="fstMain" cols="216,*" border="10" frameborder="1" FRAMESPACING="10" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" >
<FRAME name="fraLeftFrame" src="/expert/Deeptree/leftframe.asp?url=/expert/deeptree/welcome.asp?1=1&frame=&xmlsrc=/Expert/deeptree/Rooms/List.xml&csdnstyle=" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" FRAMEBORDER="1" BORDER="1"></FRAME>
<FRAME name="fraRightFrame" src="/Expert/deeptree/rightframe.asp?url=/expert/deeptree/welcome.asp?1=1&typenum=1&xmlsrc=/Expert/deeptree/Rooms/List.xml&csdnstyle=&hidetoc=false&whichpage=" FRAMEBORDER="no" bordercolor="#000000"></FRAME>
</FRAMESET>

</FRAMESET>
</HTML>

另外还有两个框体的内容得不到,那位高手帮帮忙。
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lo 2002-11-10
  • 打赏
  • 举报
回复
这里有答案。不过是用CPPWebBrowse来解决的。
http://expert.csdn.net/Expert/TopicView1.asp?id=947247

如果要用http组件的Get方法来做的话,我觉得你可以判断文本里面是否包含了<Frame>字符,如果存在的话,那么就从当前位置继续查找Src=",找到后你把src=""引号里的链接取出来,再get那个链接。这样循环的把所有的<frame>里的src都取出来,并get scr下的链接。
iamleejun 2002-10-31
  • 打赏
  • 举报
回复
mark
CDSoftwareWj 2002-10-30
  • 打赏
  • 举报
回复
当然了,ASP的内容是随便看的呀,看看下面的一些代码,希望对你有帮助

WebBrowser1.ExecWB(OLECMDID_SAVEAS,
OLECMDEXECOPT_DODEFAULT,
EmptyParam,
EmptyParam);
-------------------------------------------

var
Doc: IHTMLDocument2;
begin
Doc :=WebBrowser1.Document as IHTMLDocument2;
if Doc.queryCommandEnabled('Copy') then
Doc.execCommand('Copy',false,EmptyParam)
end;

--------------------------------------------------------
下面这个最有用!!!
好好看看吧

uses Mshtml, ActiveX;

procedure InvokeCMD(pDisp: IDispatch; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
const
CLSID_WebBrowser: TGUID = '{ED016940-BD5B-11cf-BA4E-00C04FD70816}';
begin
New(PtrGUID);
if InvokeIE then PtrGUID^ := CLSID_WebBrowser else
PtrGuid := PGUID(nil);
if pDisp <> nil then
try
if Succeeded(pDisp.QueryInterface(IOleCommandTarget, CmdTarget)) and
(CmdTarget <> nil) then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
except end;
finally
Dispose(PtrGUID);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
InvokeCmd(WebBrowser1.Document, TRUE, 2, 0, EmptyParam, EmptyParam);
end;

Delphi写的,也能转成BCB的

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧