简单问题送分啦……………………(200分)

  • 主题发起人 主题发起人 moroko
  • 开始时间 开始时间
M

moroko

Unregistered / Unconfirmed
GUEST, unregistred user!
function TForm1.GetWebPage(const Url: string): string;
var //引用了 wininet单元
Session,
HttpFile:HINTERNET;
szSizeBuffer:Pointer;
dwLengthSizeBuffer:DWord;
dwReserved:DWord;
dwFileSize:DWord;
dwBytesRead:DWord;
Contents:PChar;
begin
Session:=InternetOpen('',0,niL,niL,0);
HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
dwLengthSizeBuffer:=1024;
HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
GetMem(Contents,dwFileSize);
InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
InternetCloseHandle(HttpFile);
InternetCloseHandle(Session);
Result:=StrPas(Contents);
FreeMem(Contents);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := GetWebPage('http://quan.kele8.com/supei/openFriend.do?vs=20');
end;

使用上面的代码获得html原码,用什么办法可以获得当前的url地址呢
当获得http://quan.kele8.com/supei/openFriend.do?vs=20这个页面的原码时得到的却跳转后页面的代码(跳转后页面http://210.51.5.91/index.htm?uid=6132003&key=04375m3xQul034l2c15l)
如何获得跳转后的url呢?
 
这个函数不大会,你可以使用indy的IdHTTP1进行解析。

吧idHttp.HandleRedirects置为True取得header看看是否有Http://....什么什么的,
你再编写代码重新定向再发送,就可以了。
你使用flashget等工具可以看出明显的重新定位的命令。
也是使用这个原理做的。不过使用winInet我就不知道了。
 
问题: idhttp取网页内容无法解决取那些自动跳转类页面的内容,而用Webbrowser取,又不是很方便。怎么办? ( 积分: 50 )
分类: Internet/TCPIP

来自: Boblee, 时间: 2004-03-02 13:41:00, ID: 2480154
我有个程序需要定时到设定某些新闻站点去抓新闻,我用的是idhttp控件,获取新闻网页内容是一个不错的选择,但现有些新闻网站,新闻内容页面它是通过一个跳转来显示的,比如:在页面上的连接是:http://www.abc.com.cn/2038400/43983232.html,当你点击这个页面时,最终显示出来的是:http://www3.abc.com.cn/2038400/43983232.html。而此时用idhttp去取这类页面时,由于得到的先是:http://www.abc.com.cn/2038400/43983232.html,但因为idhttp不象webbrowser一样能自动跳转,idhttp就是提示找不到页面。
而用webbrowser可以解决这类跳转页面的内容获取问题,但由于webbrowser页面是否下载完,是通过触发一个叫webbrowserdownloadcompleted这个事件的,不象用idhttp一样,可能在一个function内通过一个循环就能做完,所以程序里,对要处理一个页面中有上百个网址的内容获取就显示很麻烦。不知大家有没有这样的控件:综合idhttp获取内容的直接及webbrower自动跳转的功能。

来自: llwu, 时间: 2004-03-12 23:37:34, ID: 2500362
idhttp有没有办法获得 Object Moved后的url,即楼主提到的http://www3.abc.com.cn/2038400/43983232.html


来自: 东兰梦舞, 时间: 2004-03-13 9:01:30, ID: 2500542
让 IdHTT P的 HandleRedirects := True 就可以自动跳转到真正的目的地址.

来自: satanmonkey, 时间: 2004-03-13 10:58:23, ID: 2500723
楼上正解

来自: Boblee, 时间: 2004-03-13 17:42:51, ID: 2501340
谢谢东兰梦舞,如果可以,马上给分表示感谢。

来自: e-, 时间: 2004-03-13 20:02:11, ID: 2501491
while WebBrowser.ReadyState <> READYSTATE_COMPLETE do
文档尚未完成

来自: Boblee, 时间: 2004-03-14 17:04:08, ID: 2502402
好用,给分了。

得分大富翁: 东兰梦舞
 
接分来也
 
楼上几位,我的目的是得到跳转后的url,如果用Webbrowser网页的代码会被解释被解释,我之所以得到网页 原码 也是不想被Webbrowser解释 但还想得到 跳转后的url
 
已经解决
 
后退
顶部