加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi自动提交网页表单和获取框架网页源码

发布时间:2020-12-15 10:02:11 所属栏目:大数据 来源:网络整理
导读:这两个问题的实现原理其实是差不多的,所以放在一起介绍,单元 MSHtml 封装了我们需要的功能。 首先,新建一个DELPHI工程,在USES部分添加 MSHtml 单元的引用。 然后,在窗体上放置一个TWebBrowser控件和四个按钮。 最后,编写四个按钮的响应代码: 1. 自动

这两个问题的实现原理其实是差不多的,所以放在一起介绍,单元MSHtml封装了我们需要的功能。

首先,新建一个DELPHI工程,在USES部分添加MSHtml单元的引用。

然后,在窗体上放置一个TWebBrowser控件和四个按钮。

最后,编写四个按钮的响应代码:

1. 自动提交网页表单

procedure?TForm1.Button1Click(Sender: TObject);
begin
? WebBrowser1.Navigate('http://www.baidu.com');
end;

procedure?TForm1.Button2Click(Sender: TObject);
var
? doc: IHTMLDocument2;
? oleObj: OleVariant;
begin
? doc := WebBrowser1.Document?as?IHTMLDocument2;
??if?doc =?nil then?Exit;
? oleObj := doc.all.item('wd',0)?as?IHTMLElement2;
??//网页有一个名为“wd”的文本框:<input type="text" name="wd" id="kw" maxlength="100">
? oleObj.Value := 'Delphi';?//为文本框赋值
? oleObj := doc.all.item('su',128)">//网页有一个ID为“su”的按钮:<input type="submit" value="百度一下" id="su">
? oleObj.Click;??//点击按钮,提交表单
end;?

2. 获取框架网页源码

?procedure?TForm1.Button3Click(Sender: TObject);
begin
? WebBrowser1.Navigate('http://含有框架的网页URL');
end;

procedure?TForm1.Button4Click(Sender: TObject);
var
? doc,framedoc: IHTMLDocument2;
? frame_dispatch: IDispatch;
? ole_index: OleVariant;
? i: Integer;
begin
? doc := WebBrowser1.Document?as?IHTMLDocument2;
??if?doc =?nil then?Exit;
??for?i := 0?to?doc.frames.length - 1?do
??begin
??? ole_index := i;
??? frame_dispatch := doc.frames.item(ole_index);
????if?frame_dispatch =?nil then?Continue;
??? framedoc := (frame_dispatch?as?IHTMLWindow2).document;
????if?framedoc =?nil then?Continue;
??? ShowMessage(framedoc.body.innerHTML);
??end;
end;
?

3. 获取网页所有链接

procedure TForm1.Button1Click(Sender: TObject);
var
? elem: IHTMLElement;
? coll: IHTMLElementCollection;
? i: integer;
? url,title: string;
begin
? coll := (WebBrowser1.Document as IHTMLDocument2).all;
? coll := (coll.tags('a') as IHTMLElementCollection);
? for i := 0 to coll.Length - 1 do
???? begin?//?? 循环取出每个链接
????? elem := (coll.item(i,0) as IHTMLElement);
????? url := Trim(string(elem.getAttribute(WideString('href'),0)));
????? title := elem.innerText;
????? ShowMessage(Format('链接标题:%s,链接网址:%s',[title,url])); ???? end; end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读