delphi html转为图片,delphi 从一个HTML返回所有的图片链接

uses mshtml, ActiveX, COMObj, IdHTTP, idURI;

{ .... }

procedure GetImageLinks(AURL: string; AList: TStrings);

var

IDoc: IHTMLDocument2;

strHTML: string;

v: Variant;

x: Integer;

ovLinks: OleVariant;

DocURL: string;

URI: TidURI;

ImgURL: string;

idHTTP: TidHTTP;

begin

AList.Clear;

URI := TidURI.Create(AURL);

try

DocURL := 'http://' + URI.Host;

if URI.Path <> '/' then

DocURL := DocURL + URI.Path;

finally

URI.Free;

end;

Idoc := CreateComObject(Class_HTMLDocument) as IHTMLDocument2;

try

IDoc.designMode := 'on';

while IDoc.readyState <> 'complete' do

Application.ProcessMessages;

v := VarArrayCreate([0, 0], VarVariant);

idHTTP := TidHTTP.Create(nil);

try

strHTML := idHTTP.Get(AURL);

finally

idHTTP.Free;

end;

v[0] := strHTML;

IDoc.Write(PSafeArray(System.TVarData(v).VArray));

IDoc.designMode := 'off';

while IDoc.readyState <> 'complete' do

Application.ProcessMessages;

ovLinks := IDoc.all.tags('IMG');

if ovLinks.Length > 0 then

begin

for x := 0 to ovLinks.Length - 1 do

begin

ImgURL := ovLinks.Item(x).src;

// The stuff below will probably need a little tweaking

// Deteriming and turning realtive URLs into absolute URLs

// is not that difficult but this is all I could come up with

// in such a short notice.

if (ImgURL[1] = '/') then

begin

// more than likely a relative URL so

// append the DocURL

ImgURL := DocURL + ImgUrl;

end

else

begin

if (Copy(ImgURL, 1, 11) = 'about:blank') then

begin

ImgURL := DocURL + Copy(ImgUrl, 12, Length(ImgURL));

end;

end;

AList.Add(ImgURL);

end;

end;

finally

IDoc := nil;

end;

end;

// Beispiel:

// Example:

procedure TForm1.Button1Click(Sender: TObject);

begin

GetImageLinks('http://www.swissdelphicenter.ch', Memo1.Lines);

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值