有人可以告诉我如何使用带有C#的Optimus(无头浏览器)nuget包来获取来自URL的响应。我还希望页面上的javascript能像phantomjs一样自动执行。
答案 0 :(得分:2)
相当简单的套件:
首先创建一个Engine组件(动态和静态页面通用):
Engine engine = new Engine();
打开要撤消的html文档的网址:
a)不等待使用javascript添加的任何元素:
engine.OpenUrl("http://google.com").Wait();
b)等待使用javascript添加的任何元素:
engine.OpenUrl("http://google.com")
然后是:
engine.WaitDesappearingOfId("some-id")
engine.WaitId("some-id")
engine.WaitDocumentLoad()
engine.WaitSelector("#some-id")
engine.WaitSelector(".some-class")
现在你打开网址,有两种方法可以做到这一点 - 加载文档(在执行任何javascript之前):
更完整的例子:
public static string dynamicLoadingPage()
{
var engine = new Engine();
engine.OpenUrl("https://html5test.com");
var tagWithValue = engine.WaitSelector("#score strong").FirstOrDefault();
System.Console.WriteLine("Score: " + tagWithValue.InnerHTML);
}
否则:
static string staticLoadingPage()
{
var engine = new Engine();
engine.OpenUrl("http://google.com").Wait();
Console.WriteLine("The first document child node is: " + engine.Document.FirstChild);
Console.WriteLine("The first document body child node is: " + engine.Document.Body.FirstChild);
Console.WriteLine("The first element tag name is: " + engine.Document.ChildNodes.OfType<HtmlElement>().First().TagName);
Console.WriteLine("Whole document innerHTML length is: " + engine.Document.DocumentElement.InnerHTML.Length);
}