使用TWebBrowser执行网页中的JS翻页,无法获取刷新后的网页源码?

luisszhou 2009-08-15 10:51:45
C++Builder2009

用TWebBrowser打开网页后,我继续执行以下代码

IHTMLDocument2 *doc=NULL;
IHTMLElement *body;
BSTR source;
String strHtml;
for ( int i=0;i<10; i++ ) {
TWebBrowser1->Navigate(L"javascript:gogage(pageno+1)");
(void*)doc=wbrwUA->Document;
doc->get_body(&body);
body->get_outerHTML(&source);
strHtml=source;
}


结果是无论网页上翻多少页,htmlsrc始终是第1页的源代码,但是在TWebBrowser里显示是翻页了的。
我想,新的网页肯定已经下载了,不然不会显示翻页,但是怎么获取呢?
请达人指教,谢谢。
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
castlooo 2009-09-02
  • 打赏
  • 举报
回复
翻页后网页中的内容,是动态生成的.页面的源码没有改变.

重新根据URL导向,第一次能获取网页源码
luisszhou 2009-08-22
  • 打赏
  • 举报
回复
2楼的兄弟,还是不行啊
tom0 2009-08-15
  • 打赏
  • 举报
回复
同意二楼!但是我觉得
TWebBrowser1->Navigate(L"javascript:gogage(pageno+1)")是不是该获得按钮,让后用按钮调用javascript的方法
ccrun.com 2009-08-15
  • 打赏
  • 举报
回复
从Navigate到页面加载完毕,需要一些时间,而你的代码中刚Navigate就获取Body的HTML文本,新的页面可能没有加载完成. 这样试试:
for (int i = 0; i < 10; i++ )
{
TWebBrowser1->Navigate(L"javascript:gogage(pageno+1)");

// 等待WebBrowser加载完毕
while (TWebRowser1->Busy)
Application->ProcessMessages();

(void*)doc = wbrwUA->Document;
doc->get_body(&body);
body->get_outerHTML(&source);
strHtml = source;
}


以上代码仅仅是楼主基础上修改, 未做测试, 不保证能编译, 以及不保证有效果.

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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