程序中如何调用网页并自动得到网页返回的结果 ( 积分: 200 )

  • 主题发起人 主题发起人 topking999
  • 开始时间 开始时间
T

topking999

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]相信大家都有过这样的经历:
用IE打开一个网页,在页面上的编辑框中输入一些内容,选择一个选择框,然后提交,
页面返回时,我们看到了我们需要的结果
现在呢,我的问题是:
用DELPHI编写一个程序,在程序中调用该网页,不需要人员操作,需要填写什么内容到哪个编辑框,由程序赋值,选择哪个选择按钮,也有程序赋值,也通过程序提交,待页面返回后,程序获得那些结果,当然是很多的内容(字段)。
可以实现吗?
如何实现?
请给一个例子。
谢谢。
我的Email: topking999@sina.com
yzyangliu@sina.com
[/blue]
 
[blue]相信大家都有过这样的经历:
用IE打开一个网页,在页面上的编辑框中输入一些内容,选择一个选择框,然后提交,
页面返回时,我们看到了我们需要的结果
现在呢,我的问题是:
用DELPHI编写一个程序,在程序中调用该网页,不需要人员操作,需要填写什么内容到哪个编辑框,由程序赋值,选择哪个选择按钮,也有程序赋值,也通过程序提交,待页面返回后,程序获得那些结果,当然是很多的内容(字段)。
可以实现吗?
如何实现?
请给一个例子。
谢谢。
我的Email: topking999@sina.com
yzyangliu@sina.com
[/blue]
 
用winhttp控件好了,很简单的,自带例子。
也可以用Indy的http控件,用起来相对复杂一点,不过它是免费的。
 
[:(][purple][/purple]没有人会么?
 
这是我做过的一个例子,程序打开建设银行郑州分行的外汇牌价查询,你只要确定开始日期和结束日期,程序会自动提取外汇表格,这是自动填写表单并提交查询的过程。
{SubmitForm函数实现向网页自动提交数据,并自动提交查询}
procedure TForm1.SubmitForm(var loop:integer);
var
doc:IHTMLDocument2;
elec:IHTMLElementCollection;
chele:IHTMLElement;
InputElement:IHTMLInputElement;
i:integer;
begin
if BankBrowser.Document =nil then exit; //如果网页未打开或者内容为空,则退出。
doc:=BankBrowser.Document as IHTMLDocument2; //调用IHTMLDocument2接口
elec:=doc.all.tags('INPUT') as IHTMLElementCollection; // 取得网页中的输入元素,即INPUT标签
for i:=0 to elec.length -1 do
begin
chele:=elec.item(i,emptyparam) as IHTMLElement;
if chele.tagName ='INPUT' then
try
InputElement:=elec.item(i,emptyparam) as IHTMLInputElement;
if InputElement.name= 'bbstxt' then
InputElement.value :=LoopArray[loop];//这里是一个循环数组,给输入框自动赋值。
chele.click; //提交网页查询
except
end;
end;
end;
 
阿狗:
  你好。
  可以说得详细一点吗?
 
[:(]而且你的代码,好象只有提交部分。取查询结果部分呢?
[:)]谢谢
 
阿狗的方法只能针对网页中的INPUT文本框,对于网页中的复选框就不行了。
procedure TForm1.Button1Click(Sender: TObject);
var
doc:ihtmldocument2;
input:ihtmlinputelement;//可以根据网页中文本框的情况定义多个
select:ihtmlselectelement;//同上,这个是针对复选框
submit:OleVariant;
begin
try
doc:=webbrowser1.documnet as ihtmldocument2;
input:=doc.all.item(网页中文本框的名字,0) as ihtmlinputelement;
input.value:=你需要输入的东西;
...........
select:=doc.all.item(网页中复选框的名字,0) as ihtmlselectelement;
select.selectedindex:=你要选择的第几项;
...........
submit:=doc.all.item(网页中提交按钮的名字,0);
submit.click;
except
end;
end;
对于返回的结果,你可以通过取得网页源代码的方法,再通过pos、copy等一系列字符串函数进行筛选,再把结果显示到你指定的地方。
取得源代码的方法:
var
html:string;
begin
html:=ihtmldocument2(webbrowser1.document).body.outerhtml;
end;
 
多人接受答案了。
 
后退
顶部