在HtmlAgilityPack中运行脚本

我正在尝试抓取一个按如下方式工作的特定网页。

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

如果我使用HtmlAgilityPack获取页面-该脚本不会运行,那么我得到的基本上是空白页面。

有没有一种方法可以强制它运行脚本,以便我可以获取数据?


慕斯王
浏览 890回答 3
3回答

达令说

您将获得服务器返回的内容-与Web浏览器相同。然后,Web浏览器将运行脚本。HTML Agility Pack仅是HTML解析器-它无法解释javascript或将其绑定到文档的内部表示形式。如果要运行脚本,则需要Web浏览器。完整的“无头”网络浏览器将是您问题的完美答案。那是结合了HTML解析器,javascript解释器和模拟浏览器DOM的模型的所有东西,它们一起工作。基本上,这是一个Web浏览器,除了没有呈现部分。目前,还没有一种东西可以完全在.NET环境下工作。最好的选择是使用WebBrowser控件,并在程序控制下在Internet Explorer中实际加载和运行页面。这不会很快或很漂亮,但是它将满足您的需要。另请参见我对类似问题的回答:使用.Net加载DOM并在服务器端执行javascript,其中讨论了.NET中执行此操作的可用技术。不幸的是,大多数组件现在都存在,但还不存在或没有以正确的方式集成。

jeck猫

这是尚不存在的地方之一,至少如果您将其全部保留在.NET中。如果您可以使用混合应用程序,则肯定有多种方法可以执行此操作,但是它将更加复杂。我一直希望有人能完全在.NET中创建真正的统一无头浏览器。但这绝对不是一件容易的事。就像我说的那样,有很多作品,但是有人需要把它们放在一起。
打开App,查看更多内容
随时随地看视频慕课网APP