Könnte jemand kopflosen Browser für .NET vorschlagen, der Cookies und authomatisch Javascript-Ausführung unterstützt?C# kopfloser Browser mit JavaScript-Unterstützung für Crawler
Antwort
Mir ist kein .NET-basierter Browser ohne Kopf bekannt, aber es gibt immer PhantomJS, was C/C++ ist, und es funktioniert ziemlich gut für die Unterstützung bei Unit-Tests von JS mit QUnit.
Es gibt auch eine andere wichtige Frage hier, die Ihnen helfen könnten - Headless browser for C# (.NET)?
Selenium+HtmlUnitDriver/GhostDriver ist genau das, was Sie suchen. Selenium ist eine vereinfachte Bibliothek für die Verwendung verschiedener Browser für Automatisierungszwecke - Testen, Scraping, Aufgabenautomatisierung.
Es gibt verschiedene WebDriver-Klassen, mit denen Sie einen aktuellen Browser betreiben können. HtmlUnitDriver ist ein kopfloser. GhostDriver ist ein WebDriver für PhantomJS, so dass Sie C# schreiben können, während PhantomJS das Heavy Lifting übernimmt.
Code-Snippet von Selenium docs für Firefox, aber Code mit GhostDriver (PhantomJS) oder HtmlUnitDriver ist fast identisch.
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();
}
}
Wenn Sie diese auf Windows-Rechner ausführen können Sie aktuelle Firefox/Chrome-Treiber verwenden, da es ein tatsächlichen Browser-Fenster geöffnet wird, die in C# wie programmiert arbeiten wird. HtmlUnitDriver ist das leichteste und schnellste.
Ich habe erfolgreich Selenium für C# (FirefoxDriver) unter Linux mit Mono ausgeführt. Ich nehme an, HtmlUnitDriver funktioniert auch so gut wie die anderen, also wenn Sie Geschwindigkeit benötigen - ich schlage vor, Sie gehen für Mono (Sie können entwickeln, testen und mit Visual Studio unter Windows kompilieren, kein Problem) + Selenium HtmlUnitDriver läuft auf Linux-Host ohne Desktop .
Sie meinen das [WebBrowser-Steuerelement] (http://msdn.microsoft.com/en-us/library/te2y1x6.aspx)? –
möglich Duplikat von [WebClient runs javascript] (http://stackoverflow.com/questions/5372277/webclient-runs-javascript) –
Wie planen Sie es zu verwenden? – jrummell