如何读取网页源码(50分)

  • 主题发起人 主题发起人 liunini
  • 开始时间 开始时间
L

liunini

Unregistered / Unconfirmed
GUEST, unregistred user!
用idhttpClient如何读取https网页的源码?
 
我记得似乎这里有过类似的问题
各位,可否指点一二
 
memo1.lines.add(idhttp1.Get('http://www.xxx.com/index.htm'));
 
我好不容易在大富翁才搞明白的!请看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2438418
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils,MSHTML_TLB, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, SHDocVw, StdCtrls, HTTPApp, XMLBrokr ,
ActiveX, ComCtrls;

……………………
procedure TForm1.Button3Click(Sender: TObject);
var
DoC: IHTMLDocument2;
begin
list:=TstringList.Create;
Doc := WebBrowser1.Document as IHTMLDocument2;
Memo1.Lines.Add(Doc.body.outerhtml); //读源码
Memo1.Lines.Add(Doc.body.outerText); //Html To Text
end;

需要引入:component/import active ../micsoft html object library(4.0).自己找对
我写个大概
 
wqhatnet:
我找不到对应的ocx,可不可以说详细点。
各位,如果知道,请指点!
 
component/import activeX control ../microsoft html object library(version4.0).
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ScktComp, StdCtrls;

type
TForm1 = class(TForm)
ClientSocket: TClientSocket;
btnLink: TButton;
btnSend: TButton;
Memo: TMemo;
Edit: TEdit;
Button1: TButton;
procedure btnLinkClick(Sender: TObject);
procedure btnSendClick(Sender: TObject);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
Var
f:File;

procedure TForm1.btnLinkClick(Sender: TObject);
begin
AssignFile(f,'out.txt');
Rewrite(F,1);
Memo.Lines.Clear;
ClientSocket.Open;
end;

procedure TForm1.btnSendClick(Sender: TObject);
begin
ClientSocket.Socket.SendText('GET /'+Edit.Text+#$0A);
end;

procedure TForm1.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
Var
s:String;
begin
If Socket.Connected Then
Begin
s:=Socket.ReceiveText;
Memo.Lines.Add(s);
BlockWrite(F,s[1],Length(s));
End;
end;

procedure TForm1.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo.Lines.Add('AAAAAConn');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket.Close;
CloseFile(f);
end;

end.
 
Copy过来的:
直接从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);
 
多人接受答案了。
 
后退
顶部