请教如何从一个网页源文件中读取正文内容???(100分)

  • 主题发起人 主题发起人 3304xfq
  • 开始时间 开始时间
3

3304xfq

Unregistered / Unconfirmed
GUEST, unregistred user!
用IDHttp从一个地址中得到网页,获取网页中的正文(不一定是boby之间的,只要能在浏览器里显示的都要取得)

另外,想了解IDhttp的使用例子或方法(用其它控件方面得到网页也可以)

平台:delphi7
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ToolWin, ComCtrls, Buttons, ExtCtrls,jpeg,shellapi,filectrl,Wininet
,URLMon,ShlObj, ActiveX,DDEman,ComObj, CheckLst, Menus;

function Downloadhtml(const aUrl: string): Boolean;
var
i:integer;
list:Tstrings;
hSession: HINTERNET;
hService: HINTERNET;
abc,swfPath,ToFile:String;
lpBuffer: array[0..1024 + 1] of Char;
dwBytesRead: DWORD;
begin
Result := False;
list:=TStringlist.Create;
hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
if Assigned(hSession) then
begin
hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0);
if Assigned(hService) then
try while True do
begin
dwBytesRead := 1024;
Application.ProcessMessages;
InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
if dwBytesRead = 0 then break;
lpBuffer[dwBytesRead] := #0;
list.Add(lpBuffer);
//List.SaveToFile('c:/abc.txt');
//list.LoadFromFile('c:/abc.txt');
abc:=list.text;
list.text:=StringReplace ( abc,#13#10,'', [rfReplaceAll] );
//list.SaveToFile('c:/ajc.txt');
abc:=list.text;
abc:=StringReplace ( abc,'http',#13#10+'http', [rfReplaceAll] );
abc:=StringReplace ( abc,'href="','href="'+#13#10, [rfReplaceAll] );
abc:=StringReplace ( abc,'src="','src="'+#13#10, [rfReplaceAll] );
list.text:=StringReplace ( abc,'.swf','.swf'+#13#10, [rfReplaceAll] );
list.SaveToFile('c:/eee.txt');
//deletefile('c:/abc.txt');
end;
Result := True;
finally
InternetCloseHandle(hService);
end;
end;
finally
InternetCloseHandle(hSession);
end;

//
该方法能先下载网页内容再将所有的链接内容分离出来
你可以用
for i:=0 to list.count-1 do
begin
if pos('http',list.strings)<>0 then
showMessage(list.strings);//就是你要的地址了
end;

 
干吗不用 WebBrowser 解决问题
-----------------------------------
8、直接从TWebBrowser 得到网页源码及Html下面先介绍一种极其简单的得
到TWebBrowser 正在访问的网页源码的方法。一般方法是利用TWebBrowser 控件
中的Document对象提供的IPersistStreamInit接口来实现,具体就是:先检查WebBrowser.Document
对象是否有效,无效则退出;然后取得IPersistStreamInit接口,接着取得HTML
源码的大小,分配全局堆内存块,建立流,再将HTML文本写到流中。程序虽然不
算复杂,但是有更简单的方法,所以实现代码不再给出。其实基本上所有IE的功
能TWebBrowser 都应该有较为简单的方法来实现,获取网页源码也是一样。下面
的代码将网页源码显示在 Memo1中。

Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml);

同时,在用TWebBrowser 浏览HTML文件的时候要将其保存为文本文件就很简
单了,不需要任何的语法解析工具,因为TWebBrowser 也完成了,如下:

Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterText);
-----------------------------------
详见
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1008108
http://www.delphibbs.com/delphibbs/dispq.asp?lid=694033

 
后退
顶部