带有C#的Optimus无头浏览器

时间:2017-05-17 11:59:40

标签: c# optimus

有人可以告诉我如何使用带有C#的Optimus(无头浏览器)nuget包来获取来自URL的响应。我还希望页面上的javascript能像phantomjs一样自动执行。

1 个答案:

答案 0 :(得分:2)

相当简单的套件:

  1. 首先创建一个Engine组件(动态和静态页面通用):

    Engine engine = new Engine();

  2. 打开要撤消的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")
  3. 现在你打开网址,有两种方法可以做到这一点 - 加载文档(在执行任何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);
    
    }