怎样在后台打开网页的源文件并进行代码分析?150分相送!!!(150分)

X

xli

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现这样一个功能,在编辑框里输入一个网址,
按下确定后程序自动在后台打开这个网页的源文件,并按设定的条件进行分析,
找出需要的代码(如含有XXX字符的代码),
请问怎样才能在后台打开网页的源文件并进行分析?
初学者,请详细说明,最好有源代码示例,非常感谢!
 
问题不明确~[:D]
 
在编辑框里输入一个网址后,你可用WinInet API把指定网址的网页下载下来
源文件都是纯文本,怎么分析就不用多说了。
 
我并不想把它下到机器上,只是在系统后台打开这个源文件进行分析,能说具体点吗?
希望能有代码说明。谢谢。
如果只能下载的话,具体怎样做?
 
不明白你所问的问题。
 
那如果只是想打开一个网页的源文件呢?
 
到内存处理最简单的方法是直接内存处理,笨一点就用 TStringList ,
再差点就装入 Memo。(指 */TEXT 类型)。不同的方法使用大体差不多,
就是找到 特征串 ,内存中使用缓冲读写,其他可以一行一行读写。
可用函数很多,可以看看的 strScan ,Copy ,Pos ,StrLen ,....等等
 
>>我并不想把它下到机器上,只是在系统后台打开这个源文件进行分析
不下载你是不可能分析的。 下载到你的内存中也是下载啊,不一定非要保存到硬盘上的
至于下载代码,很简单,用Indy的控件就行了
如果不想用控件,直接用Wininet的API也只是几句代码,我记得以前ShellAPI发过一篇帖子
就是用API下载文件的,你可以搜索一下。
 
谢谢以上几位朋友。
我想我的意思跟xianjun朋友说的一样,是想把网页源文件下在内存里打开。
但Indy servers里有很多控件,到底用哪个,具体操作方法呢?
这些我都没用过,不熟悉,书上也没讲这个。
还请各位大虾多多指教!谢谢了!
 
用IdHTTP就行了
直接用它的Get方法
实在不行就看看它的DEMO
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP, ComCtrls;
type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
Button1: TButton;
Memo1: TMemo;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
procedure IdHTTP1Work(Sender: TObject;
AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdHTTP1Workbegin
(Sender: TObject;
AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdHTTP1WorkEnd(Sender: TObject;
AWorkMode: TWorkMode);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
tmpStr:String;
const
//你要找的字符
resStr='XXXXXXX';
begin
tmpStr:=idHTTP1.Get('http://www.delphibbs.com/delphibbs/');
showmessage(IntToStr(pos(resStr,tmpStr)));
//Memo1.Text:=tmpStr;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject;
AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
ProgressBar1.Position:=AWorkCount;
end;

procedure TForm1.IdHTTP1Workbegin
(Sender: TObject;
AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
ProgressBar1.Max:=AWorkCountMax;
end;

procedure TForm1.IdHTTP1WorkEnd(Sender: TObject;
AWorkMode: TWorkMode);
begin
ProgressBar1.Position:=0;
end;

end.
 
/Delphi6/demos/Indy/httpclient下有例子
 
建议使用ICS较好,Indy不怎么好。
 
接受答案了.
 
顶部