首页 文章

在HtmlAgilityPack中运行脚本

提问于
浏览
13

我正在尝试抓取一个如下工作的特定网页 .

首先加载页面,然后它运行某种javascript来获取填充页面所需的数据 . 我对这些数据很感兴趣 .

如果我使用HtmlAgilityPack获取页面 - 脚本没有运行,所以我得到它本质上是一个空白页面 .

有没有办法强制它运行脚本,所以我可以获取数据?

2 回答

  • 10

    您可以使用Awesomium,http://www.awesomium.com/ . 它运行得相当好,但不支持x64,并且不是线程安全的 . 我'm using it to scan some web sites 24x7 and it'连续运行至少几天但是它通常会崩溃 .

  • 3

    您将获得服务器返回的内容 - 与Web浏览器相同 . 当然,Web浏览器会运行脚本 . Html Agility Pack只是一个HTML解析器 - 它无法解释javascript或将其绑定到文档的内部表示 . 如果您想运行该脚本,则需要Web浏览器 . 对您的问题的完美答案将是一个完整的“无头”Web浏览器 . 这是一个包含HTML解析器,javascript解释器和模拟浏览器DOM的模型的东西,它们一起工作 . 基本上,这是一个Web浏览器,除了没有渲染部分 . 目前还没有完全在.NET环境中运行的东西 .

    最好的办法是使用 WebBrowser 控件,并在程序控制下实际加载并运行Internet Explorer中的页面 . 这不会很快或很漂亮,但它会做你需要做的事情 .

    另请参阅我对类似问题的回答:Load a DOM and Execute javascript, server side, with .Net讨论了.NET中可用的技术 . 大多数作品现在都存在,但不幸的是,它们并没有以正确的方式进行整合 .

相关问题