none
WebClient verzögert downloaden RRS feed

  • Frage

  • Hallo,

    ich hänge gerade an einem Problem. Für mein Programm muss ich eine Internetseite downloaden. Dies tue ich mit dem WebClient. Jedoch habe ich ein Problem. Auf der Internetseite laden bestimmte Elemente (Bilder oder Texte) erst nachdem die Seite "geladen" wurde. Also mein Webbrowser (PC) sagt mir das sie geladen sei, aber eigendlich läd die Seite von selber noch bestimmte Elemente.

    Kann ich den WebClient verlangsamen oder wie genau könnte ich dieses Problem lösen?

    LG Elias

    Internetseite BEISPIEL


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 23. Juni 2014 15:13

Antworten

Alle Antworten

  • Hallo Elias,

    zum einen kann es verschiedene Ursachen haben, warum etwas nachgeladen wird. Aber egal, welcher das ist, wird dich das nicht weiterbringen, da Du mit dem WebClient (und HttpWebRequest, ...) nur den eigentlichen HTML Code erhältst.

    Darin enthaltene Javascript Teile werden weder geladen (außer bei Inlinecode) noch ausgeführt. D.h. auch wenn Du eine Verzögerung einbauen würdest, wird dir das nichts bringen, da Du an den nachgeladenen Inhalt gar nicht rankämst, da dieser in der Rückgabe nie vorhanden sein wird.

    Das einzige, was Du in dem Fall machen könntest, wäre, die WebBrowser Klasse zu verwenden und dort dann den Inhalt inkl. des dynamisch nachgeladenen Inhalts auszulesen.

      http://msdn.microsoft.com/de-de/library/system.windows.forms.webbrowser.aspx

    Ggfs. reicht hier das DocumentCompleted Ereignis schon aus. Falls nicht, müsstest Du dort einfach nochmal x Sekunden warten (bspw. per Timer, der einmal nach x Sekunden zündet).

      http://msdn.microsoft.com/de-de/library/system.windows.forms.webbrowser.document.aspx

      ...


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 23. Juni 2014 15:23
    Moderator
  • Hallo,
    eine weitere Möglichkeit wäre mit einem Programm wie Fiddler den Netzwerkstrom beim laden der Seite zu beobachten.
    Starte einfach das Programm und lade die Seite im Browser. Wenn Inhalte nachträglich geladen werden siehst du deren URLs in Fiddler. So kannst du ggf. an die weiteren URLs heran kommen, die du noch herunter laden musst.

    Das macht natürlich nur Sinn, wenn es dir rein um die Daten, aber nicht ums Design (HTML/CSS) geht.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Montag, 23. Juni 2014 15:29
    Moderator
  • Vielen dank für eure Antworten. Ich habe leider vergessen zu erwähnen das ich für Windows Phone entwickle und Fiddler wegfällt. Aber die Lösung mit dem Webbrowser Control hört sich ganz gut an.

    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 23. Juni 2014 15:37
  • Hallo Elias,

    ggfs. wäre es auch sinnvoll, wenn Du uns verrätst, was Du eigentlich machen willst. Was also soll wie verarbeitet werden?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 23. Juni 2014 15:40
    Moderator
  • Hallo Stefan,

    aus der Seite bräuchte ich 1 Bild und einen Text. Diese möchte ich dann in meinem App einbauen.


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 23. Juni 2014 15:41
  • Hallo Elias,

    und diese Inhalte werden nachgeladen?

    Ggfs. wäre es ja dann sinnvoller, auf einem PC mal mittels Firebug, Fiddler, ... zu schauen, was genau da wie geladen wird. Wenn das bspw. ein Ajax Request an den Server ist, könntest Du auch einfach genau diesen Request nachbauen. Ob das mit der Zielwebsite klappt, kann man so nicht sagen. Wenn Du uns die genaue URL preisgibst und uns sagst, welchen Inhalt Du dort haben möchtest, können wir mal schauen, ob das klappen würde.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 23. Juni 2014 15:46
    Moderator
  • Hallo Stefan,

    die Internetseite wäre diese hier: http://programm.ard.de/TV/3sat/tagesschau/eid_2810612291257878?print=0.

    Von diese Website möchte ich dieses Bild: http://programm.ard.de/sendungsbilder/teaser_huge/581/10732577581_Original_EPG-DB.JPEG und diesen Text Die Nachrichten der ARD.

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 23. Juni 2014 15:51
  • Ich habe gerade ein wenig an meinem Code gebastelt und jetzt scheint es zu funktionieren. Vielleicht habe ich einen Fehler gemacht aber jetzt gehts!

    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 23. Juni 2014 16:10
  • Hallo Elias,

    der Text steht ja schon in der normalen HTML Rückgabe. Das Bild bzw. dessen URL eigentlich auch. Du müsstest beim entsprechenden <img /> Tag das Attribut "data-ctrl-attributeswap" auslesen und den dort enthaltenen JSON String parsen. Die Information zum URL der Grafik steht dann in action.m (für die mittlere Größe, alternativ xs, s, l oder xl) zur Verfügung. Die kannst Du doch nehmen, dann hast Du das Problem mit dem verzögerten Laden nicht mehr.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 23. Juni 2014 16:12
    Moderator