ajax抓取网页内容(程序中使用functionGetHtml获得的网页源码中并不会更新内容)
优采云 发布时间: 2021-12-21 23:06ajax抓取网页内容(程序中使用functionGetHtml获得的网页源码中并不会更新内容)
使用程序中的TWebbrowser控件或Indy中的控件使用Ajax技术连接网页,获取的网页源代码不会收录任何客户端更新。同理,在IE浏览器中查看源文件时也看不到Ajax更新的内容。通过插件可以看到Ajax的更新内容。问题是如何在程序中获取完整的网页内容?
如果有 Ajax 更新,则不会触发 Webbrowser 的 DocumentComplete 事件。
其实,完整的网页内容并非不可用,只需使用一个简单的方法:
函数 GetHtml(const WebBrowser:TWebBrowser): 字符串;
无功
文档:IHTMLDocument2;
开始
Doc := WebBrowser.Document as IHTMLDocument2;
如果已分配(Doc) 和已分配(Doc.body) 那么
结果:= Doc.body.OuterHtml; //也可以使用innerHTML来获取它的HTML文本
结尾;
这样得到的HTML内容收录了Ajax更新的内容。
现在关键是没有什么好的方法可以判断Ajax是否更新了,因为是异步更新,所以判断起来比较困难。我在互联网上搜索。国外好像有更复杂的解决方案,我也没有研究过是否可行。
我做过网页内容采集软件,不知道有没有好的处理方法,欢迎指教。:-)