2012-11-16 4 views
5

Gibt es eine Möglichkeit, eine Webseite mit HTTPWebRequest zu holen und dann den JavaScript-Code auf der Seite zusammen mit Ajaxaufrufen auszuführen und das Ergebnis in einer Zeichenfolge zu speichern?C# Ziehen Sie eine Webseite mit HTTPWebRequest und führen Sie das Javascript von der Site aus

Ich möchte eine Website analysieren, wo einige Bilder über Js-Code generiert werden und die Bilder nicht auf der Webseite sind, bevor das js-Skript ausgeführt wurde.

Jetzt suchte ich im Internet nach einer Lösung für diese, aber alles, was ich fand, waren Antworten wie dies ist nicht möglich, verwenden Sie stattdessen den Webbrowser, die keine Option für mich ist.

Grüße

+1

Können Sie näher erläutern, warum die Verwendung der WebBrowser-Klasse keine Option ist? – alexn

+0

http://notions.okuda.ca/2009/06/11/calling-javascript-in-a-webbrowser-control-from-c/ elaboration auf was Alexn schlägt vor. Ich kann nicht von Ihrem Q unterscheiden, wenn Sie * das * 'WebBrowser'-Objekt nicht verwenden können, wenn Sie * einen * Webbrowser nicht verwenden können. –

+0

WebBrowser ist langsam und manchmal fehlerhaft, Geschwindigkeit zählt für mich. – maddo7

Antwort

2

Sie könnten dies mit dem C++ - http-System tun, das Ihnen eine Menge Kontrolle über die Daten gibt, die empfangen werden, aber ich denke, das ist nicht wirklich eine Antwort. ..

Warum nicht versuchen webkit into your app setzen und die Ereignisse davon ablaufen. Es gibt mehrere Ereignisse, die Sie benachrichtigen können, wenn Downloads gestartet und beendet werden.

+0

Ich denke, der schnelle und einfache Weg, dies zu tun, ist das WebBrowser-Steuerelement, das beste für ihn ist die Verwendung dieses .NET WebKit Wrapper. –

0

Dies ist in der Tat nicht möglich, da ich herausgefunden, bei dem Versuch, eine dringend benötigte Nachfrage gerecht zu werden. Das Javascript wird ausgeführt, aber die Ajax-Aufrufe werden nicht ausgeführt.

Die Lösung, für die ich mich entschied, war, alle Daten, die die Ajax-Aufrufe synchron hatten, über die Code-Behind-Datei (C# -Code) zu bekommen und Code-Behind-Variablen Javascript-Variablen mithilfe von Script-Tags zuzuweisen Javascript macht seine Arbeit (Aufbau dynamischer Elemente usw.)

+0

und was hast du benutzt, um das Javascript ohne die Ajax-Aufrufe auszuführen? – maddo7

+0

Sync Javascript wird trotzdem in jeder Webanfrage ausgeführt. Nur mit asynchronem Code (Ajax-Aufrufe, Callbacks) schlägt es fehl. Um die Frage zu beantworten: Ich habe die 'WebRequest' Klasse in ASP.NET verwendet. –

1

Ich habe ein wenig recherchiert, nur weil ich dachte, dass es interessant ist. Ich habe etwas namens Phantom.js gefunden, das aussieht, als würde es tun, was du brauchst. Probieren Sie es aus: http://phantomjs.org/

+0

Interessantes Projekt, aber es scheint mehr freistehend und nicht für den Einsatz in C# zu sein. –

Verwandte Themen