2016-09-01 4 views
1

ausführen Ich verwende C# .net 4.5 mit VS2015 und versuchen, die Website Scraping. HTML-Tabelle zu Daten. Für die Web-Browser-Steuerung mit Winform C# ein, weil ich gehört habe, dass man mehr Feature als WPF-Steuerelement hat.Wie kann ich JavaScript-Funktion in C# oder WPF

Hier ist die Website, die ich versuche zu analysieren. (Koreanische Musik-Streaming-Site wie Apple Musik) http://www.melon.com/mymusic/like/mymusiclikesong_list.htm?memberKey=7605160 und es gibt ein Skript zum Umblättern der Seite wie unten gezeigt.

javascript:pageObj.sendPage('21'); 

das bedeutet, die Datentabelle seit 21 der Datenliste anzuzeigen. aber ich weiß nicht, wie dieses Skript in meinem C# -Webbrowser ausgeführt wird. Ich habe versucht, mit InvokeScript mit Parametern zu laufen, aber es konnte das Skript nicht finden. Soweit ich gehört habe, um Objekt umgebrochene Funktion auszuführen, kann ich eine Funktion innerhalb des geladenen HTML-Dokuments wie ein Proxy einfügen. aber es ist auch gescheitert. Nach vielen Versuchen, habe ich bemerkt, dass die Funktion von Chrom-Konsole (F12) einfach ausgeführt werden kann. Gibt es ein Quell-Snippet oder eine Bibliothek von Drittanbietern, die Javascript in C# ausführen, genau wie die Chrome-Konsole? oder wenn ich es implementieren muss, bitte geben Sie mir irgendwelche Tipps.

Antwort

1

Die javascript:pageObj.sendPage('21'); eine URL, die Sie navigieren können. Der Web-Browser navigiert nicht zum Skript, sondern führt das Skript aus. So können Sie einfach Navigate Methode von WebBrowserControl verwenden:

this.webBrowser1.Navigate("javascript:pageObj.sendPage('21');"); 
+0

Lassen Sie mich wissen, wenn Sie Fragen über die Antwort haben :) –

0

Ich rufe Sie Javascript über Web-Browser-Steuerung von WPF durch die unten stehende Befehl:

string ScriptName = "sendPage"; 
string ID = "21"; 
this.WebBrowserPage.InvokeScript(ScriptName, ID); 
+0

ich schon versucht „InvokeScript“, aber es funktioniert nicht, weil es Objektfunktion ist. Wenn sich die Funktion "sendPage" in derselben HTML- oder öffentlichen Methode befindet. es würde funktionieren. leider nicht. –

+0

Sie möchten vielleicht mehr auf http://StackOverflow.com/a/14496790/6161894 für die Funktion "InvokeMember" –

Verwandte Themen