2014-09-18 90 views
2

我想以编程方式解析网站的页面,显然我需要完整的HTML代码。但是,站点只能通过直接URL加载一些主页面,一旦加载主页面,它就会通过AJAX接收其内容。如何获取完全加载的HTML页面代码

我怎样才能加载一个页面“像在浏览器”,让它完全加载所有的脚本,他们的工作完成?例如,如果我使用WebBrowser类真正打开一个页面,就像在浏览器中一样,它的DocumentText属性(它应该代表DOM内容)只返回初始页面,而没有通过AJAX加载实际内容或类似的内容google.com)。这也发生在浏览器中,并看到我需要使用开发人员工具的实际HTML。

更新:答案被发现是在这里,这要归功于弗拉基米尔Shmidt how to dynamically generate HTML code using .NET's WebBrowser or mshtml.HTMLDocument?

DocumentText“根” DOM加载后没有更新其内容,但文档属性确实。

回答

0

您是否听说过http://webkitdotnet.sourceforge.net/? 而且.NET具有可以“在浏览器中,如”用于

+0

是的,它已经,我只是你的评论后,更新了我的问题,请调查一下。 – yaapelsinko 2014-09-18 17:24:10

+0

当WebBrowser中的DocumentCompleted(WebBrowserDocumentCompletedEventHandler)事件足以满足所有站点通过ajax加载的时候? – 2014-09-18 17:27:15

+0

哈姆,我会去看看它...... – yaapelsinko 2014-09-18 17:30:21

0

我怎么会加载一个网页WebBrowser组件...?

这样做的唯一可行的方法是实际上在浏览器中加载页面。这可以通过使用像Selenium/WebDriver这样的工具来实现自动化。

+0

那么有WebBrowser类在浏览器中打开它,我已经更新了我的问题。仍然没有看到“优雅”的解决方案... – yaapelsinko 2014-09-18 17:28:03

0

从标题看来,在AJAX和javascript检索或生成内容之后,您似乎希望在页面中完成HTML。如果是这种情况,浏览器调试器(F12)会有这种情况。在Chrome中,查看“元素”标签下的内容。

+0

是的,但我需要以编程方式加载来解析它。有没有机会从WebBrowser实例接收完整的代码? – yaapelsinko 2014-09-18 17:29:39

0

这里有几个解决方案。

主逻辑:

  1. 请求该页
  2. 等待直到文档完全加载(readyState的=完成)
  3. 获取文档内容

我想一个简单的人是使用WebControl来导航到您的url并等待控件就绪或完成状态。 之后,你可以开始解析。

这里的SO是一个解决方案:htmlagilitypack and dynamic content issue

相关问题