用DELPHI WEBBROWSER从网页上拉数据

szchenzb 2012-06-05 03:02:39
请教一下,我想从网页上拉数据,我使用以下语句
ovTable:=webbrowser1.OleObject.Document.all.tags('TABLE').item(0);//取表格集合
可以得到表格的所有数据,但把它放到循环中:
url:='http://data.eastmoney.com/bbsj/201112/yjbb.html';
for k:=1 to 10 do begin
if k=1 then
urltxt:=url
else
urltxt:=copy(url,1,length(trim(edit1.Text))-5)+'/ggrq/'+inttostr(k)+'.html';
webbrowser1.Navigate(WideString(UrlTxt), Flags, Flags, Flags, Flags);
while (not docdowncomp) do
Application.ProcessMessages ;
try
ovTable:=webbrowser1.OleObject.Document.all.tags('TABLE').item(0);
except
on e:exception do
showmessage(e.Message);
end;
for i := 1 to (ovTable.Rows.Length - 1) do //循環行
begin
for j := 1 to (ovTable.Rows.Item(i).Cells.Length ) do begin// 循環列
application.ProcessMessages;
memo1.lines.add(ovTable.Rows.Item(i).Cells.Item(j-1).InnerText);
end;
end;
end;
得到的数据全部是第一页的表格数据,第二页又是首页的数据,网页都能成功打开,不知道为什么?
...全文
378 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyistudio 2012-06-06
  • 打赏
  • 举报
回复
这个不是大问题吧,表达式又不用固定,自己设定一个采集规则变量,固定采集区的头尾和提取特征就行了
szchenzb 2012-06-06
  • 打赏
  • 举报
回复
哦,我之前就是从源代码提取,但该网页源码经常变,每次都得重写程序,比较烦
cyistudio 2012-06-06
  • 打赏
  • 举报
回复
这小程序没完全做完,代码其实很简单,取得要采集的网页链接后按一个网页开一个线程用idhttp获取网页源码,再用正则提取想要的数据,正则控件可以用perlRegEx,有些表达式不支持,或者用VBscript.dll里的regex都可以……
szchenzb 2012-06-06
  • 打赏
  • 举报
回复
cyistudio,能否提供一个参考一下吗?
cyistudio 2012-06-06
  • 打赏
  • 举报
回复
idhttp+正则+多线程,做的一个小采集程序用的就这些东西
szchenzb 2012-06-06
  • 打赏
  • 举报
回复
有可能,那应如何关闭再打开呢?
haitao 2012-06-06
  • 打赏
  • 举报
回复
是不是webbrowser1.OleObject需要关闭、释放,才能访问第二个网页?
mhhaifeng 2012-06-06
  • 打赏
  • 举报
回复
IE 可同时打开多个网页
webbrowser1.OleObject.Document. 一直保存的是第一个网页的数据
szchenzb 2012-06-06
  • 打赏
  • 举报
回复
如何我不做网页循环的话,一页一页打开,都能正常取值,但如果有100页就太麻烦了,求救!!
szchenzb 2012-06-06
  • 打赏
  • 举报
回复
我监控第二页是打开了,但ovTable值没有被赋新值,不知是何原因?
haitao 2012-06-05
  • 打赏
  • 举报
回复
直接使用idhttpclient下载,会怎么样?

按理说,ie下载不同的url,也应该不同的

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧