如何获取完整加载的HTML页面代码

时间:2014-09-18 17:15:53

标签: c# html ajax http

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

如何加载一个“像浏览器一样”的页面,让它完全加载所有脚本完成工作?

例如,如果我使用WebBrowser类来真正打开一个页面“就像在浏览器中”,它的DocumentText属性(应该代表DOM内容)只返回初始页面而没有通过AJAX加载的实际内容或类似的东西(在谷歌上测试) .COM)。这也发生在浏览器中,并且看到我需要使用开发人员工具的实际HTML。

更新:答案是在这里,感谢Vladimir Shmidt how to dynamically generate HTML code using .NET's WebBrowser or mshtml.HTMLDocument?

在加载“root”DOM后,DocumentText不会更新其内容,但Document属性会更新。

4 个答案:

答案 0 :(得分:0)

你听说过http://webkitdotnet.sourceforge.net/吗? 此外.net还有可用于

的WebBrowser组件

答案 1 :(得分:0)

  

我怎么能像“在浏览器中”一样加载页面......?

唯一确定的方法是实际在浏览器中加载页面。这可以通过使用Selenium / WebDriver等工具自动完成。

答案 2 :(得分:0)

从标题开始,在AJAX和javascript检索或生成内容之后,您似乎希望在页面中完成HTML。如果是这种情况,浏览器调试器(F12)将具有此功能。在Chrome中,请查看" Elements"标签

答案 3 :(得分:0)

有一些解决方案。

主要逻辑:

  1. 申请页面
  2. 等待文档已满载(ReadyState =已完成)
  3. 获取文档内容
  4. 我想一个简单的方法是使用WebControl导航到你的url并等待控件就绪或完成状态。 之后你就可以开始解析了。

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