我想以编程方式解析网站的网页,显然我需要有完整的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属性会更新。
答案 0 :(得分:0)
答案 1 :(得分:0)
我怎么能像“在浏览器中”一样加载页面......?
唯一确定的方法是实际在浏览器中加载页面。这可以通过使用Selenium / WebDriver等工具自动完成。
答案 2 :(得分:0)
从标题开始,在AJAX和javascript检索或生成内容之后,您似乎希望在页面中完成HTML。如果是这种情况,浏览器调试器(F12)将具有此功能。在Chrome中,请查看" Elements"标签
答案 3 :(得分:0)
有一些解决方案。
主要逻辑:
我想一个简单的方法是使用WebControl导航到你的url并等待控件就绪或完成状态。 之后你就可以开始解析了。
这里的SO是一个解决方案:htmlagilitypack and dynamic content issue