加载网页并在异步javascript完成后解析其html

时间:2015-01-16 09:46:48

标签: javascript c# html html-parsing html-agility-pack

对于个人使用的.net项目,我正在尝试加载和解析skyscanner.net搜索结果页面。我知道Skyscanner有这些任务的API,但似乎没有免费的个人许可证可供使用。

问题是Skyscanner需要很长时间才能完成搜索过程,因此使用HtmlAgilityPack加载文档会导致页面没有我正在寻找的内容。

我尝试使用WebBrowser对象及其事件DocumentCompleted,但似乎在将实际搜索结果加载到页面之前触发了事件。

那么,有没有办法加载页面,等待javascript异步脚本完全填满页面,然后让html解析?

2 个答案:

答案 0 :(得分:1)

您可以使用PhantomJs。我有这个问题,但没有找到解决我问题的方法。我在 This Article 中使用PhantomJs并在10秒后获取加载页面。在我看来,您的问题的最佳解决方案是该条款。

答案 1 :(得分:0)

正如你所说,这是一个个人项目,那么我将从PhantomJS开始:

它基本上是没有前端的Chrome副本,可通过API控制。

您可能可以获取该网站的副本,运行JavaScript,然后将最终HTML的副本提取到Html-Agility-Pack。

就目前而言,我认为你自己使用Html-Agility-Pack会遇到问题,因为它只是用来解析静态html的块。