我需要得到指定url网页的html,并赋值给一个string型变量,请问如何实现.
解决方案 »
- 关于U盘的一些问题?高手进来!
- 如何将COM+安装打包
- 100求救数据库的备份和恢复,导入与导出
- 在DBGrid中选择多个数据进行打印!!高手请教!!
- 关于汉字内码表的一点疑惑,请求大家的帮助!
- 怎样添加一个需要调用的函数(此函数序自己写)
- 考上研究生了!高兴ing!
- 新作发表----网络收藏家V1.60
- 1---------------0----------------------0-------------- 分
- 我想单击DBGrid控件某个记录时这条记录能显示跟其他记录不一样的颜色,并把这条记录的信息提供给其他窗体使用,我该怎么做
- delphi程序关闭问题
- 请达人协助,如何处理Vista下窗口大小限制的问题
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MSHTML_TLB, OleCtrls, SHDocVw, StdCtrls, ActiveX;type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure WB_GetDocumentSourceToStream(Document: IDispatch; Stream: TStream);
// Save a TWebbrowser Document to a Stream
var
PersistStreamInit: IPersistStreamInit;
StreamAdapter: IStream;
begin
Assert(Assigned(Document));
Stream.Size := 0;
Stream.Position := 0;
if Document.QueryInterface(IPersistStreamInit,
PersistStreamInit) = S_OK then
begin
StreamAdapter := TStreamAdapter.Create(Stream, soReference);
PersistStreamInit.Save(StreamAdapter, False);
StreamAdapter := nil;
end;
end;function WB_GetDocumentSourceToString(Document: IDispatch): string;
// Save a Webbrowser Document to a string
var
Stream: TStringStream;
begin
Result := '';
Stream := TStringStream.Create('');
try
WB_GetDocumentSourceToStream(Document, Stream);
Result := StringReplace(Stream.Datastring, #$A#9, #$D#$A, [rfReplaceAll]);
Result := StringReplace(Result, #$A, #$D#$A, [rfReplaceAll]);
finally
Stream.Free;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://10.113.58.5');
end;procedure TForm1.Button1Click(Sender: TObject);
var vsHTML:string;
begin
vsHTML:=WB_GetDocumentSourceToString(WebBrowser1.Document);
Memo1.Lines.Text:=vsHTML;
end;end.
这个只能取到<HTML></HTML>标签内的源码,之外的取不到
ActiveX;function TForm1.GetFrame(FrameNo: Integer): IWebbrowser2;
var
OleContainer: IOleContainer;
enum: IEnumUnknown;
unk: IUnknown;
Fetched: PLongint;
begin
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
if Assigned(Webbrowser1.document) then
begin
Fetched := nil;
OleContainer := Webbrowser1.Document as IOleContainer;
OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum);
Enum.Skip(FrameNo);
Enum.Next(1, Unk, Fetched);
Result := Unk as IWebbrowser2;
end
else
Result := nil;
end;// Load sample page
// Testseite laden
procedure TForm1.Button1Click(Sender: TObject);
begin
Webbrowser1.Navigate('网址');
end;// Save all frames in single files
// Alle Frameseiten in einzelne Dateien speichern
procedure TForm1.Button2Click(Sender: TObject);
var
IpStream: IPersistStreamInit;
AStream: TMemoryStream;
iw: IWebbrowser2;
i: Integer;
sl: TStringList;
begin
for i := 0 to Webbrowser1.OleObject.Document.frames.Length - 1 do
begin
iw := GetFrame(i);
AStream := TMemoryStream.Create;
try
IpStream := iw.document as IPersistStreamInit;
if Succeeded(IpStream.save(TStreamadapter.Create(AStream), True)) then
begin
AStream.Seek(0, 0);
sl := TStringList.Create;
sl.LoadFromStream(AStream);
sl.SaveToFile('c:\frame' + IntToStr(i) + '.txt');
// memo1.Lines.LoadFromStream(AStream);
sl.Free;
end;
except
end;
AStream.Free;
end;
end;end.
按下按钮后报错:Assert(Assigned(Document));在此句上?
var
s:string;
ms: TMemoryStream;
StrStream:TStringStream;
begin
//先读取到流中,暂存于memo1
if not Assigned(embeddedwb1.Document) then Exit;
ms := TMemoryStream.Create;
(embeddedwb1.Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms), True);
ms.Position := 0;
Memo1.Lines.LoadFromStream(ms);
ms.Free; //再从流中取出数据输出
s := memo1.text;
end;