Quelltext einer Website



  • Guten Abend,

    ich würde gerne den Quelltext einer Website mittels C# .NET auslesen. Dabei habe ich mich auch schon erkundigt und folgender Code klappt auch:

    WebClient client = new WebClient();
    string quellcode = client.DownloadString("www.google.de");
    

    Mein Problem ist aber, dass ich eine Seite auslesen will, die egal wie oft man rumklickt und Seiten wechselt, die gleiche URL besitzt (kennen einige vielleicht von dem verstorbenen kino.to). Meine Kenntnisse in dieser Hinsicht sind gering und daher weiß ich nicht, um was es sich da handelt. Ich denke mal um irgendeinen Javascript-Kram. Aufjedenfall ist auf jeder Seite, die diese Homepage anzeigt, die gleiche URL, aber jeweils verschiedener Inhalt und gerade diesen Inhalt muss ich bekommen.
    Ich habe auch schon versucht mit einem eigenen Webbrowser den Inhalt auszulesen, jedoch kommt das gleiche Ergebnis wie in dem oben gezeigten Code dabei raus.
    Ich wäre für Hilfe dankbar.

    Mit freundlichen Grüßen,
    Freaky



  • Hast du schon verscuht System.Windows.Forms.WebBrowser in dein Projekt einzubinden und dann per DOM die Links auszulesen und anzuklicken um zu navigieren?



  • Ich möchte ja nicht navigieren, sondern den Inhalt der Seite auslesen, oder verstehe ich dich falsch?



  • FreakY<3Cpp schrieb:

    Ich möchte ja nicht navigieren, sondern den Inhalt der Seite auslesen, oder verstehe ich dich falsch?

    Du hast gesagt, dass du auf einer Seite von mehreren unter der gleichen URL zu finden ist (Vermutlich sind das dann Frames), und dazu musst du die entsprechende Unterseite ansurfen. Und dann sollte das dann über links gehen.

    Zum Webbrowser:

    • Navigieren: .Navigate
    • HTML auslesen (bin mir nicht sicher, ob das original Webserver-HTMl ist, oder "aufgräumt" ist) oder schreiben: .DocumentText


  • Ja die Seite regelt alles mit Frames.
    Wenn ich in Mozilla Firefox rechtsklicke, kann ich im Reiter "Aktueller Frame" dann "Frame-Quelltext anzeigen". Den Quelltext kriege ich dann auch angezeigt, nur mit .DocumentText kriege den Quelltext der Hauptseite.
    Ich würde ja den Link auf der Hauptseite nehmen, um den Quelltext dieser Unterseite zu bekommen, nur bei jedem erneuten Besuch dieser Seite ändert sich auch die URL der Links zu den Unterseiten.


  • Administrator

    FreakY<3Cpp schrieb:

    Ich würde ja den Link auf der Hauptseite nehmen, um den Quelltext dieser Unterseite zu bekommen, nur bei jedem erneuten Besuch dieser Seite ändert sich auch die URL der Links zu den Unterseiten.

    Der Link zum Frame ändert sich bei jedem erneuten Besuch? Verstehe ich das richtig?
    Wie wird denn der Link verändert? Javascript oder statisch z.B. per PHP? Wenn er per PHP verändert wird, würde der Framelink ja in der Hauptseite stehen und du könntest ihn extrahieren.
    Wenn es über Javascript läuft, dürfte es komplexer werden. Da wüsste ich auf Anhieb nicht wie vorgehen. Du müsstest halt irgendwie den Javascript Code ausführen. Kenne mich da aber zu wenig aus.

    Ansonsten könnte vielleicht das hier helfen:
    http://social.msdn.microsoft.com/forums/en-us/Vsexpressvcs/thread/3010322D-2DB2-49C2-BD2B-8B3B22B1C97E

    Grüssli



  • Ja das hast du richtig verstanden. Und ich glaube es ist durch Javascript geregelt, denn in dem Quelltext der Hauptseite stehen keine Links, nur eine Abfrage ob der Webbrowser, den man benutzt, über Frames verfügt und wenn nicht, wird dem Benutzer das mitgeteilt. Ansonsten enthält die Hauptseite keinen Quelltext.
    Scheinbar hat der Code auf deiner Seite das richtige vor, jedoch springt mein Programm immer in die catch-Anweisung. Nachdem ich try-catch mal rausgenommen habe, wird folgende Ausnahme geworfen:

    UnauthorizedAccessException
    Zugriff verweigert (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))

    Die Frames lassen wohl keinen Zugriff auf sich zu.



  • Hat vielleicht noch jemand andere Vorschläge?


Anmelden zum Antworten