c#无头浏览器,支持爬虫的javascript

任何人都可以建议支持cookie和authomatically javascript执行的无头浏览器?

Selenium + HtmlUnitDriver / GhostDriver正是您所需要的。 过度简化,Selenium是用于自动化目的的各种浏览器的库 – 测试,抓取,任务自动化。

您可以使用不同的WebDriver类来操作实际的浏览器。 HtmlUnitDriver是一个无头的人。 GhostDriver是PhantomJS的WebDriver,所以你可以编写C#,而PhantomJS实际上会做繁重的工作。

来自Selenium docs for Firefox的代码片段,但使用GhostDriver(PhantomJS)或HtmlUnitDriver的代码几乎完全相同。

using OpenQA.Selenium; using OpenQA.Selenium.Firefox; using OpenQA.Selenium.Support.UI; class GoogleSuggest { static void Main(string[] args) { // driver initialization varies across different drivers // but they all support parameter-less constructors IWebDriver driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://www.google.com/"); IWebElement query = driver.FindElement(By.Name("q")); query.SendKeys("Cheese"); query.Submit(); WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until((d) => { return d.Title.ToLower().StartsWith("cheese"); }); System.Console.WriteLine("Page title is: " + driver.Title); driver.Quit(); } } 

如果您在Windows机器上运行它,您可以使用实际的Firefox / Chrome驱动程序,因为它将打开一个实际的浏览器窗口,该窗口将按照C#中的编程操作。 HtmlUnitDriver是最轻量级和最快速的。

我已经使用Mono在Linux上成功运行了Selenium for C#(FirefoxDriver)。 我想HtmlUnitDriver也可以和其他人一样好用,所以如果你需要速度 – 我建议你选择Mono(你可以在Windows上使用Visual Studio进行开发,测试和编译,没问题)+在没有桌面的Linux主机上运行的Selenium HtmlUnitDriver 。

我不知道基于.NET的无头浏览器,但总有PhantomJS是C / C ++,它可以很好地协助用QUnit对JS进行unit testing。

这里还有另一个相关的问题可能对你有帮助 – C#(.NET)的无头浏览器?