Mit C/C++ Webseite steuern



  • Hallo zusammen,

    ich verzweifel gerade leider ein wenig bei folgendem Problem:
    Ich muss eine Webseite öffnen und ein bisschen durchnavigieren um dann mehrere Millionen Dokumente herunterzuladen(nein, leider gibt es keine Schnittstelle wie Web Services oder FTP). Leider muss jedes Dokument einzeln heruntergeladen werden.
    Jetzt würde wahrscheinlich Web Broser Automatisierung anbieten aber scheinbar gibt es ein paar Schwierigkeiten mit CEF und der IE scheint auch ungeeignet zu sein. Nun zu meiner Frage: Wie kann ich nativ eine Seite steuern? Ich habe das Gefühl, dass ich z.B. mit cURL nicht weit kommen werde kann das sein?
    Ablauf ist folgender: Auf der Startseite muss ein Benutzer und ein Passwort eingegeben werden -> Klick auf den Anmeldebutten -> dann ein paar Filter setzen -> Suchen Button klicken -> Links aus einer Tabelle suchen und Dokumente herunter laden -> Wenn Liste zu ende dann nächste Seite in der Paginierung mit den nächsten 100 Dokumenten -> wieder alles herunterladen usw. usw. usw..

    Der Anbieter der Seite setzt hier auf eine ASP.NET Seite.

    Weiß jemand wo ich ansetzen kann?



  • Ich arbeite übrigens mit Windows 7



  • Viel einfacher als einen Browser zu steuern ist es, die Informationen aus den Seiten selbst auszuwerten. Das ist oft eine Sache von wenigen Minuten.

    Wenn der Login permanent ist, kann es sogar reichen, dich einmal im Browser anzumelden, dann das Cookie zu kopieren und fortan in deinem Programm mitzusenden - dann musst du nicht mal den Login programmieren.

    Beim Betätigen der Suche wird aller Wahrscheinlichkeit nach eine URL mit den entsprechenden Parametern nachgeladen. Sieh dir den Aufbau der URL an, das versetzt dich in die Lage, selbst Suchen mit beliebigen Filtern abzusetzen.

    Dann musst du nachsehen, wie du die benötigten Informationen eindeutig im Dokument erkennen kannst. Beispielsweise könnte die gesuchten URLs immer mit <td class="url"><a href=" anfangen, dann extrahierst du alles zwischen diesem String und dem nächsten " .



  • Mit cURL ist sowas sicherlich möglich, denn cURL unterstützt POST, GET und auch Cookies. Mehr sollte dafür nicht notwendig sein. Es sei denn, es findet viel JavaScript, usw. Anwendung, denn dann reicht das nicht mehr aus...

    Ließ dich zunächst etwas ins HTTP-Protokoll ein, denn das wird dir das Verständnis erleichtern.

    Die Liste musst du natürlich aus dem HTML-Quellcode parsen und das für nachfolgende Requests evtl. berücksichtigen.

    Es ist nicht ganz trivial, aber es ist auch nicht unendlich schwer. Es ist einfach nur nervige Fummelarbeit.

    Hiet gibt es sicherlich auch Firefox-Plugins, etc. die sowas besser und schneller erledigen können. Aber damit kann ich natürlich auch falsch liegen.



  • Hallo

    Musst du es explizit in einer Eigenen Software programmieren? Wenn nicht, dann würde ich dir https://www.httrack.com/ empfehlen, bzw. wget das Kannst du aufrufparametern starten.

    Wenn du es doch selber programmieren musst, würde ich dir auch den Weg von qwerty vorschlagen, das ist viel einfacher.

    Grus Marco


Log in to reply