微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

这两个问题的实现原理其实是差不多的,所以放在一起介绍,单元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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐