关于页面的数据获得! ( 积分: 200 )

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

maangel

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个分析论坛的工具,比如发出一个请求,不需要用webbrowser之类的控件显示出来再去解析。只需要它返回的数据就行了,用来分析每个版块有多少帖子,标题都是什么!
比如我发出个请求,想直接获得http://news.sina.com.cn/c/2005-12-09/08507663070s.shtml 这个页面的源吗就可以了,而不需要在浏览器里面显示这个页面。
因为这类控件用的少,很多文章写的也不够详细,所以没什么头绪。
我用的是delphi7,希望各位大侠能尽量提供详细的帮助,源码更好。分不够可以再添。
 
我想做一个分析论坛的工具,比如发出一个请求,不需要用webbrowser之类的控件显示出来再去解析。只需要它返回的数据就行了,用来分析每个版块有多少帖子,标题都是什么!
比如我发出个请求,想直接获得http://news.sina.com.cn/c/2005-12-09/08507663070s.shtml 这个页面的源吗就可以了,而不需要在浏览器里面显示这个页面。
因为这类控件用的少,很多文章写的也不够详细,所以没什么头绪。
我用的是delphi7,希望各位大侠能尽量提供详细的帮助,源码更好。分不够可以再添。
 
而且我发现直接使用WebBrowser1.Navigate('http://www.sina.com.cn');
要比直接用ie敲地址的显示慢很多
 
function GetWebPage(const Url: string):string;
var
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;

此方法可以获得源代码,可是如何像获取源代码中文本文件那样将源代码整齐的排列呢?
 
可以用SOCKET直接发送命令行
var s:string[255];
begin
s:= 'get http://http://news.sina.com.cn/c/2005-12-09/08507663070s.shtml http/1.0'+#13#10+'accept: */*' +#13#10+ 'accept: text/html' + #13#10+#13#10
send(sock,s,sizeof(s),0)
end;
然后在接收数据里面返回的就是整个页面的信息。
 
后退
顶部