2012-04-15 5 views
27

Ich bin (war) ein Python-Entwickler, der eine GUI-Web-Scraping-Anwendung erstellt. Vor kurzem habe ich beschlossen, auf .NET Framework zu migrieren und die gleiche Anwendung in C# zu schreiben (diese Entscheidung war nicht meine).Kopfloser Browser für C# (.NET)?

In Python habe ich die Mechanize-Bibliothek verwendet. Ich kann jedoch nichts Ähnliches in .NET finden. Was ich brauche, ist ein Browser, der in einem Headless-Modus läuft, der die Möglichkeit hat, Formulare auszufüllen, sie einzureichen etc. JavaScript-Parser ist kein Muss, aber es wäre sehr nützlich.

+1

Eine DIY-Version, die keine andere Bibliothek benötigt: http://StackOverflow.com/a/1995667/17034 –

+0

http://StackOverflow.com/Questions/12059752/Run-and-Control-Browser-Control -in-different-thread Das funktioniert für meine Bedürfnisse. –

Antwort

29

Es gibt einige Optionen:

  • WebKit.Net (kostenlos)

  • Awesomium
    Es auf Chrome/WebKit basiert und funktioniert wie ein Charme. Es gibt eine kostenlose Lizenz zur Verfügung, sondern auch ein kommerzieller und wenn nötig können Sie den Quellcode :-)

  • HTML Agility Pack (kostenlos)
    Dies hilft bei der Extraktion von Informationen aus HTML usw. kaufen und könnte nützlich sein, in Ihr Fall (möglicherweise in Verbindung mit HttpWebRequest)

+2

Danke. Hmm, korrigiere mich, wenn ich falsch liege, aber erfordern nicht alle diese (oder zumindest die ersten beiden) eine Erstellung einer Benutzerschnittstelle (ich dachte mir das beim Lesen der Dokumente)? Was ich brauche, ist ein kopfloser Browser, also einer ohne GUI. –

+1

@Deusdies NEIN - mindestens der zweite (Awesomium) und dritte (HTML Agility Pack) Link arbeiten völlig kopflos ... mit dem ersten Link bin ich mir nicht sicher ... – Yahia

+0

@Deusdies zum Beispiel Awesomium - laut der Dokumentation (siehe http://awesomium.com/docs/1_6_5/sharp_api/) es gibt Ihnen Pixel, wenn Sie sie in einer Benutzeroberfläche rendern möchten, wenn nicht müssen nicht. – Yahia

3

können Sie nach (in der beta zur Zeit) oder etwas ähnliches mit der .NET WebBrowser Klasse, die über einen fensterlosen ActiveX/COM API mit IE kommuniziert TrifleJS sein.

Sie werden im Wesentlichen einen vollwertigen Browser (kein HTTP-Request-Wrapper) mit der Trident-Engine von Internet Explorer verwenden. Wenn Sie nicht an der JavaScript-API (einem Port von phantomjs) interessiert sind, können Sie möglicherweise noch einige verwenden der C# -Codebase, um Schlüsselkonzepte (benutzerdefinierte Header, Cookies, Skriptausführung, Screenshot-Rendering usw.) zu umgehen.

Beachten Sie, dass dies je nach dem, was Sie installiert haben, auch verschiedene IE-Versionen emulieren kann.

enter image description here

7

Weitere Lösungen:

  • PhantomJS - voll funktionsfähige Web-Maden Browser. Wird oft in Kombination mit Selenium verwendet, mit dem Sie auf den Browser aus der .NET-Anwendung zugreifen können.
  • Optimus (nuget package) - leichter kopfloser Webbrowser. Es ist in der Beta, aber es ist für einige Fälle ausreichend.

Ich verwendete beide für Web-Tests. Sie eignen sich aber auch für das Abstreifen von Bahnen.

+1

Ein Link zu einer möglichen Lösung ist immer willkommen, aber bitte fügen Sie Kontext um den Link so Ihre Kollegen Benutzer werden eine Idee haben, was es ist und warum es da ist. Zitiere immer den relevantesten Teil eines wichtigen Links, falls die Zielseite nicht erreichbar ist oder permanent offline geschaltet wird. Berücksichtigen Sie, dass es kaum möglich ist, ein Link zu einer externen Website zu sein. Dies ist ein möglicher Grund dafür, warum [Warum und wie werden einige Antworten gelöscht?] ( –

+0

) Vielen Dank. Ich habe meine Antwort aktualisiert. – Knyaz

+0

Übermäßige Werbung für ein bestimmtes Produkt/Ressource kann von der Community als ** Spam ** wahrgenommen werden. Werfen Sie einen Blick auf die [Hilfe], speziell [Welche Art von Verhalten wird von Benutzern erwartet?] (// stackoverflow.com/help/behavior)'s letzte Abschnitt: _Vermeiden Sie offene Eigenwerbung_. Möglicherweise interessiert Sie auch [Wie kann ich auf Stack Overflow werben?] (// stackoverflow.com/help/advertising). – FrankerZ