【发布时间】:2016-05-30 00:23:59
【问题描述】:
我有一个希望是简单的任务,但它需要一个精通 CefSharp 的人来解决它。
我有一个要从中检索 HTML 的 url。问题是这个特定的 url 实际上并没有在 GET 上分发页面。相反,它将一堆 Javascript 推送到浏览器,然后浏览器执行并生成实际呈现的页面。这意味着涉及HttpWebRequest 和HttpWebResponse 的常用方法将不起作用。
我查看了许多不同的“无头”选项,出于多种原因,我认为最能满足我需求的选项是 CefSharp.Offscreen。但我不知道这件事是如何运作的。我看到有几个可以订阅的事件和一些配置选项,但我不需要嵌入式浏览器之类的东西。
我真正需要的只是一种方法来做这样的事情(伪代码):
string html = CefSharp.Get(url);
如果这是等待 Javascript 执行并生成渲染页面所需要的,我订阅事件没有问题。
【问题讨论】:
-
请参阅gist.github.com/amaitland/9d8897067bdff5b999a1 应该可以帮助您入门。
-
@amaitland:谢谢。在获取结果 HTML 之前等待 Javascript 执行和页面完全呈现的当前方法是什么? NavStateChangedEventArgs 似乎不再存在。
-
NavStateChanged=LoadingStateChanged。没有等待javascript to finish executing的事件,开箱即用的最佳结果是页面已完成加载。我见过人们只是等待一段时间,我想这在某些情况下是有效的。你可能会发现注入一些 javascript 是最简单的,检查页面上的一些条件。
标签: javascript c# cefsharp headless-browser cefsharp.offscreen