Qualcuno potrebbe suggerire un browser headless per .NET che supporti i cookie e l'esecuzione automatica di JavaScript?C# browser headless con supporto javascript per crawler
risposta
Non sono a conoscenza di un browser headless basato su .NET ma c'è sempre PhantomJS che è C/C++ e funziona abbastanza bene per l'assistenza ai test di unità di JS con QUnit.
C'è anche un'altra questione rilevante qui che potrebbe aiutare voi - Headless browser for C# (.NET)?
Selenium+HtmlUnitDriver/GhostDriver è esattamente quello che stai cercando. Semplificato, Selenium è una libreria per l'utilizzo di vari browser per scopi di automazione: testing, scraping, task automation.
Esistono diverse classi WebDriver con le quali è possibile utilizzare un browser effettivo. HtmlUnitDriver è senza testa. GhostDriver è un WebDriver per PhantomJS, quindi puoi scrivere C# mentre in realtà PhantomJS eseguirà il sollevamento pesi.
Snippet di codice da Selenium docs per Firefox, ma il codice con GhostDriver (PhantomJS) o HtmlUnitDriver è quasi identico.
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();
}
}
Se si esegue questo su macchina Windows è possibile utilizzare il driver attuale Firefox/Chrome, perché si aprirà una finestra del browser vero e proprio che opererà come programmato in C#. HtmlUnitDriver è il più leggero e veloce.
Ho eseguito con successo Selenium per C# (FirefoxDriver) su Linux utilizzando Mono. Suppongo che HtmlUnitDriver funzioni altrettanto bene degli altri, quindi se hai bisogno di velocità - ti suggerisco di andare su Mono (puoi sviluppare, testare e compilare con Visual Studio su Windows, nessun problema) + Selenium HtmlUnitDriver in esecuzione su host Linux senza desktop .
Si intende il [controllo WebBrowser] (http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx)? –
possibile duplicato di [WebClient esegue javascript] (http://stackoverflow.com/questions/5372277/webclient-runs-javascript) –
Come pensi di usarlo? – jrummell