.html downloaden und vergleichen



  • Also, ich muss ein Programm schreiben, dass eine .html in nem bestimmten Intervall runterlädt und mit der alten Version vergleicht. Ich bräuchte also einmal den Funktionsnamen um ne .html downzuloaden sowie die Funktion womit man 2 Dateien vergleichen kann. Die Library die ich einbinden muss brauch ich natürlich auch, wobei ich hoffe, dass es das in den standard libs gibt 😉
    Benutze übrigens Devc++ in der neuesten Version.



  • versuchs mal mit java, wenn du sowas im standard suchst.
    ansonsten gibts dann die win-sockets oder das pendant unter linux.
    je nach betriebssystem, das du nutzt.

    aber mit "dem funktionsnamen" wirst du auf keinen fall auskommen, egal ob java, windapi oder linux 😉



  • Also arbeite unter Windows und winsockets hört sich schonmal sehr gut an.. welche .h und evtl. .lib muss ich einbinden und gibt es da evtl ein Tutorial?
    Offen ist immer noch die Frage wie man 2 Dateien vergleicht, BOOL als Ergebnis reicht schon, also ob gleich oder ungleich.





  • #!/bin/bash
    
    HTMLPAGE=http://.... 
    
    wget ${HTMLPAGE} -O page.old
    while true; do
       wget ${HTMLPAGE} -O page.new
       diff page.new page.old ||  <mach etwas bei einem unterschied>
       mv page.new page.old
       sleep 120
    end
    


  • ok hab wget downloaded.. aber ein problem hab ich noch..
    #!bin/bash will net funktionieren unter devc++ -.-



  • Das ist ja auch kein C++ sondern ein Bash-Skript.
    Die Zeile "#!/bin/bash" funktioniert auch nur unter Unix oder MSYS/Cygwin.
    http://www.mingw.org
    http://www.cygwin.com



  • Ponto hat dich derbe verarscht. 👎



  • Dass es ein Skript war hab ich schon kapiert, alleine von der Syntax her.. Teilweise konnte ich es auch in einer Batch nachbauen nur z.B. "sleep" wird nicht in Batches unterstützt..
    PS: mit shellexecute kann ich nun die befehle ausführen nur.. wäre gut wenn ich trotzdem wüsste wie man in c++ Dateien vergleichen kann, da ich nur einen bestimmten teil aus der .html vergleichen will



  • War ja nicht als Verarschung gedacht. Nur wie es einfach geht, ohne dass man direkt ein C++ Programm schreiben muss.

    Damit das klappt braucht man die Programme: bash (oder äquivalente shell), wget, true, diff, mv, sleep

    Ich bin mir sicher, dass es das alles auch unter Windows gibt.



  • Hi,

    ansonsten ist es auch nicht so schwer eine einfache http-verbindung umzusetzen.

    Du öffnest einen tcp-socket zum server(port 80 normalerweise). Dann schickst du im prinzip nur einen text zum server. Dieser text hat ein bestimmtes Format.

    Denkbar wäre:

    GET example.html HTTP/1.1\r\n
    Host: targethost.org\r\n
    \r\n
    

    Manche server möchten auch noch gern was andres wissen wie useragent und connectiontyp. Da lohnt sich ein blick in den entsprechenden rfc.
    Wenn du das abgeschickt hast wird dir der server antworten. Auch wieder ein string. Er schickt einen header voran in dem steht ob alles gut gegangen ist oder ob ein fehler aufgetreten ist. Danach folgt die eigentliche seite. Die musste du nur bis zum ende vom socket lesen. Nun kannst du die datei vergleichen und entsprechend reagieren.



  • prolog, ich glaube du hast dir die Antworten nicht durchgelesen.. die Seite runterzuladen wird nämlich schon ganz einfach und praktisch von wget.exe erledigt.. und wenn ich richtig überlege brauche ich eigentlich nicht mal mehr eine Funktion um Dateien zu vergleichen sondern wenn ich beide Dateien als Strings einlese, dann die Strings bearbeite, kann ich ja die Strings vergleichen.. Problem ist also soweit gelöst..



  • Hi,

    doch habe ich gelesen. Deswegen began meine antwort mit "ansonsten", was so viel heissen sollte wie: "wenn du doch das ganze in c++ machen willst"....

    So far ...


Anmelden zum Antworten