none
IE Automatisierung Datei Download gibt nicht den Inhalt sondern die HTML-Seite aus RRS feed

  • Frage

  • Hallo Zusammen,

    ich stecke bei meiner Automatisierung im nächsten Problem. Mit Hilfe von Frank habe ich die Anmeldung an meiner Webseite bereits gelöst komme aber bei dem jetzt statfindenden Datei Download nicht weiter.

    Ich habe einen Button den ich drücken kann und dann kommt das Download-Popup-Fenster in dem ich Namen und Speicherort der Datei angeben kann. Der Link, der sich hinter dem Button verbirgt sieht beim Mouseover folgendermaßen aus:

    https://web.s-investor.de/app/portfolio/muster.csv?INST_ID=0000414

    im Script sieht er folgendermaßen aus:

    <tr class="c-tembg">
    	<td align="right">
    		<table border="0" cellpadding="2" cellspacing="0">
    			<tr>
    				<td nowrap><a href="/app/portfolio/muster.csv?INST_ID=0000414" style="text-decoration:none"><span class="c-tns">CSV-Datei exportieren</span></a></td>
    				<td><a href="/app/portfolio/muster.csv?INST_ID=0000414"><img border="0" src="/pic/if50/c_go_III.gif" width="19" height="19" alt="CSV-Datei exportieren" title="CSV-Datei exportieren"></a></td>
    			</tr>
    		</table>
    	</td>
    </tr>
    

    Ich habe versucht mittels folgenden Code die muster.csv Datei runter zu laden:

    $storageDir = "Ablageort"
    $webclient = New-Object System.Net.WebClient
    $url = "https://web.s-investor.de/app/portfolio/muster.csv?INST_ID=0000414"
    $destination = "$storageDir\muster.csv"
    $webclient.DownloadFile($url,$destination)

    Doch wenn ich das ganze laufen lasse, dann entsteht nachher nur eine csv datei, die den html Inhalt der Seite hat. Es ist nicht die csv Datei, die ich runter laden würde, wenn ich es händisch machen würde. Ich vermute, dass die csv datei "on the fly" erstellt wird, weiß aber nicht, wie ich die jetzt abgreifen kann um sie auf die Platte zu schreiben.

    Könnt ihr mir dabei helfen?

    Gruß

    Tobias

    Montag, 4. Juni 2012 15:10

Antworten

  • Hallo,

    mittlerweile bin ich ein Stück weiter.

    Mit

    $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq 'CSV-Datei exportieren'}
    $link.click()

    bekomme ich jetzt zumindest den IE Download Dialog. Muss aber dann noch Speichern drücken und den Pfad auswählen. Kann ich das ganze auch im Script unterbringen?

    Gruß, Tobias

    Dienstag, 5. Juni 2012 08:29
  • Hallo Tobias,

    Du könntest eventuell über "SendKeys" auf den Speichern Button klicken. Das könnte sich über ein WSH Objekt realisieren lassen. Allerdings ist das nicht die saubere Methode.

    Eine andere Möglichkeit wäre, dass Du dich mit der Webclient Klasse und der HttpWebRequest Klasse befasst und darüber den Inhalt herunterlädst. Das wäre meiner Meinung nach der bessere und stabilere Weg. Allerdings sprengt das hier die Möglichkeiten des Forums.

    Viele Grüße

    Frank


    -- Frank Röder http://blog.iteach-online.de --

    Dienstag, 5. Juni 2012 22:08

Alle Antworten

  • Beim manuellen Aufruf der URL kommt nur der Hinweis "Die Instituts-ID ist nicht angegeben. ", genauso wenn ich "?INST_ID=0000414" weglasse.
    Was manuell nicht klappt, geht automatisch auch nicht.. :)

    Abgesehen davon: ich bin kein HTML-Profi, aber kann es sein das die CSV erst beim Aufruf der Url (mit der entsprechenden ID) von einem Serverscript erzeugt wird?

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Montag, 4. Juni 2012 16:10
    Moderator
  • Guten Morgen,

    also wenn ich die Seite https://web.s-investor.de/app/portfolio/muster.csv?INST_ID=0000414 aufrufe kommt bei mir keine derartige Fehlermeldung. Letztendlich läuft es so ab, dass man sich an der Webseite anmelden muss (da übergebe ich Benutzername und Kennwort) und dann versuche ich das von mir beschriebene.

    Gut möglich, dass die csv Datei erst durch klicken auf den Button erzeugt wird, aber auch das müsste sich doch automatisieren lassen, oder?

    Gruß, Tobias

    Dienstag, 5. Juni 2012 05:41
  • Hallo,

    mittlerweile bin ich ein Stück weiter.

    Mit

    $link = $ie.Document.getElementsByTagName('A') | where-object {$_.innerText -eq 'CSV-Datei exportieren'}
    $link.click()

    bekomme ich jetzt zumindest den IE Download Dialog. Muss aber dann noch Speichern drücken und den Pfad auswählen. Kann ich das ganze auch im Script unterbringen?

    Gruß, Tobias

    Dienstag, 5. Juni 2012 08:29
  • Hallo Tobias,

    Du könntest eventuell über "SendKeys" auf den Speichern Button klicken. Das könnte sich über ein WSH Objekt realisieren lassen. Allerdings ist das nicht die saubere Methode.

    Eine andere Möglichkeit wäre, dass Du dich mit der Webclient Klasse und der HttpWebRequest Klasse befasst und darüber den Inhalt herunterlädst. Das wäre meiner Meinung nach der bessere und stabilere Weg. Allerdings sprengt das hier die Möglichkeiten des Forums.

    Viele Grüße

    Frank


    -- Frank Röder http://blog.iteach-online.de --

    Dienstag, 5. Juni 2012 22:08
  • Schau mal hier, da hatten wir das schon mal.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 5. Juni 2012 22:50
    Moderator
  • Guten Morgen,

    in der Tat habe ich es mit Sendkeys gemacht, das habe ich gerade noch so hinbekommen. Und es funktioniert, was letztendlich ja die Hauptsache ist. Sicherlich ist es eigentlich "unsauber" aber das Ergebnis zählt.

    Habe auch festgestellt, dass es sehr spannend sein kann sich so einem Thema zu nähern, glaube aber auch, dass es halt nicht ganz so trivial ist wie ich mir das am Anfang vorgestellt habe. Bin auch kein Programmierer weshalb ich glaube, dass ich das mittles Klassen nicht hinbekommen. Mal sehen wie es weiter geht. Mein aktuelles Thema ist jedenfalls gelöst.

    Danke an alle Beteiligten,

    Tobias

    Mittwoch, 6. Juni 2012 07:42
  • Hallo Tobias,

    gerade wenn man anfängt zu scripten, dann sollte man sich darum bemühen, sauber zu arbeiten. Wenn man sich einmal die Schlamperei angewöhnt hat, dann kann man die nur noch sehr schwer wieder ablegen. Ich spreche da aus Erfahrung:-). Das mit den Klassen klingt schlimmer, als es ist.

    Wenn Du jetzt noch das Posting, was Dir geholfen hat die Aufgabe zu lösen, als Antwort markierst, dann sind wir alle zufrieden:-).

    Viele Grüße

    Frank


    -- Frank Röder http://blog.iteach-online.de --

    Freitag, 8. Juni 2012 00:25