Bestimmten Teil eines HTML Dokuments auslesen

  • Hallo Autoitler,

    ich bräuchte da mal eine kleine Hilfe, und zwar möchte ich aus einem Bestimmten HTML Dokumten Daten auslesen und in eine TExtdatei schreiben.

    Um diese Tabelle dreht es sich "http://de.wikipedia.org/wiki/Phobos_(Mond)" (Auf der Rechten Seite die Tabelle mit den Eigenschaften des Mondes und der Physikalischen Beschffenheit) davon alles bis auf das Bild.

    Versucht habe ich es so (War nur ein Test Teil aber er liest das komplette Dokument aus und speichert den gesamten Quellcode)

    [autoit]

    #include <IE.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $Planet[10]=['Merkur', 'Venus', 'Erde', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptun', 'Pluto']

    [/autoit][autoit][/autoit][autoit]

    $oIE = _IECreate("http://de.wikipedia.org/wiki/Phobos_(Mond)", 0, 0)
    $sHtml = _IEBodyReadHTML($oIE)
    $sHtml = $sHtml & _IEDocReadHTML('<td>Zentralkörper</td><td nowrap="nowrap"><a href="/wiki/'&$Planet[9]&'_(Planet)" title="'&$Planet[9]&' (Planet)">'&$Planet[9]&'</a></td></tr>')

    [/autoit][autoit][/autoit][autoit]

    FileWriteLine(@ScriptDir & "\TEXT.txt", $sHtml)

    [/autoit]

    Die Variable $Planet[10] habe ich deshalb gesetzt, da er unterscheiden soll, welcher Mond zu welchem Planeten gehört, da ich später mehrere Monde auslesen möchte (Und diese zu unterschiedlichen Planeten gehören). Ich habe auch schon die $Planet[10] Variable komplett ausgeklammert und den richtigen Quellcode eingegeben, aber er schreibt immernoch den kompletten Quellcode in eine Datei.

    Grund warum ich das mache:
    Im letzten Schulhalbjahr (Ja ihr habt richtig gehört) in Erdkunde hatten wir das Thema "Sonnensystem". Da ich mich schon länger für Astronomie interessiere hab ich angefangen ein kleines "Lexikon" zu schreiben.
    Dies wird komplett Grafisch von AutoIt später dargestellt.

    Diese Ausgelesenen Daten, nur die werte in der 2ten Spalte sollen später in eine TExtdatei geschrieben werden. Dies soll etwa so aussehen.


    Einige Mondseiten bieten aber auch nicht alle Daten (Orbitalischen oder Physikalischen) dort soll dann einfach nichts drinne stehen.

    Da ich nicht alle 178 Monde unseres Sonnensystems per Hand abtippen möchte (Dauert lange hatte es schon hintermir, nur heute komplett Bluescreen und ich hatte keine Sicherung "-.- shit happens), wäre dies ne kleine erleichterung ^^

    Ich hoffe Ihr könnt mir da helfen.

    Mfg.
    Tak | Jochen

  • [autoit]


    #include <IE.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $Planet[10]=['Merkur', 'Venus', 'Erde', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptun', 'Pluto']

    [/autoit][autoit][/autoit][autoit]

    $oIE = _IECreate("http://de.wikipedia.org/wiki/Phobos_(Mond)", 0, 0)
    $sHtml = _IEBodyReadHTML($oIE)
    ClipPut($sHtml)

    [/autoit][autoit][/autoit][autoit]

    $ergebnis1 =StringRegExp($sHtml,'<A.title="([^"]+)',3)
    $ergebnis = StringRegExp($sHtml,'<TD.noWrap>([^<]+)',3)
    _ArrayDisplay($ergebnis1,"Ergebnis_")
    _ArrayDisplay($ergebnis,"Ergebnis")

    [/autoit][autoit][/autoit][autoit]

    FileWriteLine(@ScriptDir&"\ergebnis.txt",$ergebnis1[2])
    For $p= 0 to 7
    $new = ""
    $new = $new&$ergebnis[$p]&@CRLF
    FileWriteLine(@ScriptDir&"\ergebnis.txt",$new)
    next

    [/autoit]
  • Jou so hab ich mir das vorgestellt, nurnicht die beiden Fenster die kommen bevor das in die Datei geschrieben wird.

    So aber nu kommt das nächste. In manchen Dokumenten sind bestimmte Felder nicht vorhanden, dann soll dort n/a bzw. nichts drinne stehen.

    Auch wenn ich die nächsten Daten einlesen lassen möchte, speichert der nur einen Teil und der rest fällt weg.

  • die zwei fenster bekommst du weg, indem du das hier auskommentierst oder löscht:

    [autoit]


    ; das hier löschen
    _ArrayDisplay($ergebnis1,"Ergebnis_")
    _ArrayDisplay($ergebnis,"Ergebnis")
    ;oder so
    ;_ArrayDisplay($ergebnis1,"Ergebnis_")
    ;_ArrayDisplay($ergebnis,"Ergebnis")

    [/autoit][autoit][/autoit][autoit][/autoit]

    wenn du die restlichen links postest, dann kann ich das auch für die anderen Seiten machen!

    wenn du es selbst probieren willst, dann schau dir das stringregex Tutorial von Seubo an!