为了账号安全,请及时绑定邮箱和手机立即绑定

在HtmlAgilityPack中运行脚本

在HtmlAgilityPack中运行脚本

慕斯王 2019-12-04 12:58:18
我正在尝试抓取一个按如下方式工作的特定网页。首先加载页面,然后运行某种javascript来获取填充页面所需的数据。我对这些数据感兴趣。如果我使用HtmlAgilityPack获取页面-该脚本不会运行,那么我得到的基本上是空白页面。有没有一种方法可以强制它运行脚本,以便我可以获取数据?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

您将获得服务器返回的内容-与Web浏览器相同。然后,Web浏览器将运行脚本。HTML Agility Pack仅是HTML解析器-它无法解释javascript或将其绑定到文档的内部表示形式。如果要运行脚本,则需要Web浏览器。完整的“无头”网络浏览器将是您问题的完美答案。那是结合了HTML解析器,javascript解释器和模拟浏览器DOM的模型的所有东西,它们一起工作。基本上,这是一个Web浏览器,除了没有呈现部分。目前,还没有一种东西可以完全在.NET环境下工作。


最好的选择是使用WebBrowser控件,并在程序控制下在Internet Explorer中实际加载和运行页面。这不会很快或很漂亮,但是它将满足您的需要。


另请参见我对类似问题的回答:使用.Net加载DOM并在服务器端执行javascript,其中讨论了.NET中执行此操作的可用技术。不幸的是,大多数组件现在都存在,但还不存在或没有以正确的方式集成。


查看完整回答
反对 回复 2019-12-04
?
jeck猫

TA贡献1909条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 888 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信