有人可以告诉我如何使用Optimus(无头浏览器(nuget包与C#一起从URL获取响应。 我还希望页面上的javascript像phantomjs一样自动执行。
相当简单的套件:
-
首先创建一个引擎组件(常见于动态和静态页面(:
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")
-
现在你打开 URL,有两种方法可以做到这一点——加载文档(在执行任何 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);
}