gpt4 book ai didi

delphi - 访问 TWebBrowser 显示但不包含在其图像集合中的图像

转载 作者:行者123 更新时间:2023-12-03 15:55:42 25 4
gpt4 key购买 nike

网页here突然出现在另一个这里有一个关于从电子表格中检索图像的问题。

如果您导航到 FF 中的页面,您会看到有两个图像,位于左侧蓝色标题条。

但是,如果我将页面加载到 TWebBrowser 中并运行以下代码

procedure TForm1.GetImageCount;
var
Count : Integer;
Doc : IHtmlDocument2;
begin
Doc := IDispatch(WebBrowser1.Document) as IHtmlDocument2;
Count := Doc.images.length;
ShowMessageFmt('ImageCount: %d', [Count]);
end;

,消息框报告的计数为 1,而不是预期的(无论如何,是我的)2. 我可以轻松访问并保存到磁盘显示的第一个图像,但不能第二个或任何后续的一个,因为它们不在已加载页面的 IHtmlDocument2 Images 集合中。

所以我的问题是,如何获取第二个图像并将其保存到磁盘?

FF 调试器显示该网页充满了 javascript,我想是这样可能是第二个图像的显示方式,但我不知道如何获取它。

有什么想法吗?

最佳答案

您链接的网站中的第二张图片位于 iframe 中。您可以从 OnDocumentComplete 访问 iframe事件:

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw, MsHtml;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; const URL: OleVariant);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormShow(Sender: TObject);
begin
WebBrowser1.Navigate('https://www.nbbclubsites.nl/club/8000/uitslagen');
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp:

IDispatch; const URL: OleVariant);

var
currentBrowser: IWebBrowser;
topBrowser: IWebBrowser;
Doc : IHtmlDocument2;

begin
currentBrowser := pDisp as IWebBrowser;
topBrowser := (ASender as TWebBrowser).DefaultInterface;
if currentBrowser = topBrowser then
begin
// master document
Doc := currentBrowser.Document as IhtmlDocument2;
ShowMessageFmt('ImageCount: %d', [Doc.images.length]);
end
else
begin
// iframe
Doc := currentBrowser.Document as IhtmlDocument2;
ShowMessageFmt('ImageCount: %d', [Doc.images.length]);
end;
end;

end.

保存实际图像已经是 covered in another question

关于delphi - 访问 TWebBrowser 显示但不包含在其图像集合中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55479870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com