Title Tag aus (offline) html Dateien auslesen und in Textdatei sammeln

  • Hallo zusammen, ich stehe vor einem Problem! Bitte helft mir!

    Ich habe die Aufgabe ein Helferlein zu schreiben, weiß aber im Moment noch nicht wie das zu bewerkstelligen ist!

    Scenario:

    In einem Verzeichnis liegen 50 (oder mehr!) html-Dateien. Diese sollen ausgelesen werden. Und zwar jeweils der Title Tag:

    Klassischerweise sieht das so aus:


    html Seite: Diese heisst beispielsweise Folie1.html

    Code
    ...
     ...
     <title> Den Text will ich haben! </title>
     ..
     ...
     ...
     ...

    Alle Title (also der Text zwischen den Tags) sollen in einer Textdatei gesammelt werden.

    Die sollte dann folgendermaßen aussehen.

    Textdatei(hmenu.txt)

    Code
    Den Text will ich haben!=>folie1.html
     Den Text will ich haben!=>folie2.html
     Den Text will ich haben!=>folie3.html
     ...
     Den Text will ich haben!=>folie50.html

    Ich will die Datei einfach in das Verzeichnis kopieren und dann starten.Problem ist auch dasss die Titleinformation nicht immer in der

    gleichen Zeile sein wird und die Titletexte auch nicht immer gleich lang sein werden.

    Ich hoffe Ihr gebt einem Anfänger ein paar Tipps.

    Gruß roferix

    • Offizieller Beitrag

    Hi,
    alle Dateipfade in ein Array einlesen (_FileListToArray)
    in einer Schleife für alle html-files nacheinander:
    lies die html-Datei mit Fileread ein und lass den gesuchten Inhalt mit _StringBetween rausfiltern. (Funktion gibt Array zurück!)
    Eine Variable führen wo du dann
    "gefundener Titel"="Dateiname" & Zeilenumbruch
    anfügst.
    Wenn alle Dateien durch sind, die Variable in eine Ergebnisdatei schreiben (Filewrite)

  • [autoit]

    #include <File.au3>
    #include <String.au3>

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

    Global $Files
    $Files = _FileListToArray (@ScriptDir, "*.html")
    For $i=1 to UBound ($Files)-1
    $Text = FileRead ($Files[$i])
    $Title = _StringBetween ($Text, "<title>", "</title>")
    FileWrite ("Title Liste.txt", $Title[0]&" => "&$Files[$i]&@CRLF)
    Next

    [/autoit]

    Bitte ^^