分享
 
 
 

用Delphi实现整个网站图片的极速下载

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今天在s8s8上看到一个帖子,http://www.s8s8.net/forums/index.php?showtopic=13495人气极旺,大家用不同的语言和脚本来下载一个网站上的MM照片,有shell脚本的,c语言的,C++的,vbs的,php的,perl的,还有java的和C#的,可谓百花齐放,一时兴起,我也写了个Delphi版本的,使用了多线程,基本上不到半个小时就把几千张照片全部Down了下来,不过看了几张,全都是少儿不宜,难怪那些SL们都争先恐后,当然,我也不例外了:)

程序完整代码:

//写的比较粗糙,但基本能实现下载功能,管不了那么多了。

unit GetMM;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,

IdTCPClient, IdHTTP;

const

Url='http://www.sergeaura.net/TGP/'; //下载图片的网站地址

OffI=192; //目录个数

OffJ=16; //每个目录下的最大图片数

girlPic='C:\girlPic\'; //保存在本地的路径

//线程类

type

TGetMM = class(TThread)

protected

FMMUrl:string;

FDestPath:string;

FSubJ:string;

procedure Execute;override;

public

constructor Create(MMUrl,DestPath,SubJ:string);

end;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

IdHTTP1: TIdHTTP;

CheckBox1: TCheckBox;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

RGetMM:TThread;

procedure GetMMThread(MMUrl,DestPath,SubJ:string);

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

//下载过程

procedure TForm1.Button1Click(Sender: TObject);

var

i,j:integer;

SubI,SubJ,CurUrl,DestPath:string;

strm:TMemoryStream;

begin

memo1.Lines.Clear;

//建立目录

if not DirectoryExists(girlPic) then

MkDir(girlPic);

try

strm :=TMemoryStream.Create;

for I:=1 to OffI do

begin

for j:=1 to OffJ do

begin

if (i<10) then

SubI:='00'+IntToStr(i)

else if (i>9) and (i<100) then

SubI:='0'+inttostr(i)

else SubI:=inttostr(i);

if (j>9) then

SubJ:=inttostr(j)

else SubJ:='0'+inttostr(j);

CurUrl:=Url+SubI+'/images/';

DestPath:=girlPic+SubI+'\';

if not DirectoryExists(DestPath) then

ForceDirectories(DestPath);

//使用线程,速度能提高N倍以上

if CheckBox1.Checked then

begin

GetMMThread(CurUrl,DestPath,SubJ);

sleep(500);

end else

//不使用线程

begin

try

strm.Clear;

IdHTTP1.Get(CurUrl+SubJ+'.jpg',strm);

strm.SaveToFile(DestPath+SubJ+'.jpg');

Memo1.Lines.Add(CurUrl+' Download OK !');

strm.Clear;

IdHTTP1.Get(CurUrl+'tn_'+SubJ+'.jpg',strm);

strm.SaveToFile(DestPath+'tn_'+SubJ+'.jpg');

Memo1.Lines.Add(CurUrl+' Download OK !');

except

Memo1.Lines.Add(CurUrl+' Download Error !');

end;

end;

end;

end;

Memo1.Lines.Add('All OK!');

finally

strm.Free;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

{ TGetMM }

constructor TGetMM.Create(MMUrl,DestPath,SubJ: string);

begin

FMMUrl :=MMUrl;

FDestPath :=DestPath;

FSubJ :=SubJ;

inherited Create(False);

end;

procedure TGetMM.Execute;

var

strm:TMemoryStream;

IdGetMM: TIdHTTP;

DestFile:string;

begin

try

strm :=TMemoryStream.Create;

IdGetMM :=TIdHTTP.Create(nil);

try

DestFile :=FDestPath+FSubJ+'.jpg';

if Not FileExists(DestFile) then

begin

strm.Clear;

IdGetMM.Get(FMMUrl+FSubJ+'.jpg',strm);

strm.SaveToFile(DestFile);

end;

DestFile :=FDestPath+'tn_'+FSubJ+'.jpg';

if not FileExists(DestFile) then

begin

strm.Clear;

IdGetMM.Get(FMMUrl+'tn_'+FSubJ+'.jpg',strm);

strm.SaveToFile(DestFile);

end;

except

end;

finally

strm.Free;

IdGetMM.Free;

end;

end;

procedure TForm1.GetMMThread(MMUrl, DestPath, SubJ: string);

begin

RGetMM :=TGetMM.Create(MMUrl,DestPath,SubJ);

end;

end.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有