Anzeige von "purem" Text von Webseiten

Startseite Foren Deutsches LiveCode-Forum Anzeige von "purem" Text von Webseiten

Schlagwörter: 

Ansicht von 7 Antwort-Themen
  • Autor
    Beiträge
    • #5672
      Torsten
      Teilnehmer

        Hi,

        ich möchte von einer Webseite nur den Teil haben, der den sichtbaren Text enthält, so wie der Lesemodus bei Firefox.
        Hat jemand eine Idee, wie man das machen könnte?

      • #5674
        Klaus Major
        Administrator

          Hi Torsten,

          ich habe gestern im englischen Forum einen entsprechencden Tip abgegeben:
          http://forums.livecode.com/viewtopic.php?f=7&t=30726&start=45#p167557

          1. Webpage in einem Browser Widget laden (sichtbar oder unsichbar, also das Widget)
          2. Dann folgendes Skript laufen lassen:

          ...
          set the htmltext of the templatefield to the htmltext of widget "Browser"
          put the text of the templatefield into fld "PlainText"
          
          ## Important to avoid surprises when creating a new field later!
          ## Although I think hte IDE also takes care of that.
          reset the templatefield
          ...

          Aber Vorsicht, LC unterstützt nur einen Bruchteil des HTML-Sets, CSS etc. könnte also auch als “reiner” Text dargestellt werden!

          Gruß

          Klaus

        • #5676
          Torsten
          Teilnehmer

            Hi Klaus,
            ja, ne, bei komplexeren Seiten wie z.B. http://www.spiegel.de geht es nicht.
            Wie kann man den den ganzen anderen Müll raus-strippen?

          • #5678
            Klaus Major
            Administrator

              Du wirst den Quellcode komplett manuell “parsen” müssen.
              Vielleicht hilft RegEx, aber das ist nicht meine Welt…

            • #5680
              Torsten
              Teilnehmer

                Alles klar, dann also auf die harte Tour 🙂

                Wenn ich was Pfiffiges finde, poste ich es hier.

              • #5684
                hauke
                Administrator

                  Hier ein kleines Puzzleteil, das ich mal verwendet habe, um den eigentlichen Text aus HTML-Dateien rauszukriegen. Allerdings werden hier keine scripts und styles entfernt, sondern nur alle HTML-Tags und Formatierungsangaben:

                  
                  function replacetags tx
                     return replaceText(tx,"<[^<]+>",empty)
                  end replacetags		

                  Sehr simpel, aber macht den Basisjob. Du müsstest aber noch “manuell” parsen, um den Hauptteil der Seite zu separieren.

                  Grüße

                  Hauke

                • #5686
                  Torsten
                  Teilnehmer

                    Jou, ein paar kreative Stunden und es ist geschafft: hier der Text-Extraktor für Artikel von SPIEGEL ONLINE.

                    Die Funktion für removeHTML hatte ich auch schon mal gefunden, die ist wirklich sehr nützlich. Die Funktion selectString habe ich selbst geschrieben.

                    Vorraussetzung:
                    * Browser-Widget mit Namen “SPONBrowser”, der als url eine URL eines Spiegel-Artikels hat (am besten die Homepage als Start und einen Artikel laden)
                    * Field mit Namen “PlainText”
                    * das folgende Script in einen Button einfügen

                    Zum direkten Ausprobieren diese Zeile einfach in die Messagebox einfügen 🙂
                    go to stack url "http://torstenholmer.bplaced.net/livecode_stacks/SPON-Text-Extraktor.livecode"

                    
                    function removeHTML pString  
                       
                       #  Gibt einen String ohne Tags zurück
                       
                       return replaceText(pString,"<[^<]+>",empty)
                       
                    end removeHTML
                    
                    function selectString pText, pStartString, pEndString  
                       
                       # Gibt den Text zwischen Start- und Endstring zurück
                       
                       set itemdelimiter to pStartString
                       put item 2 of pText into pText
                       set itemdelimiter to pEndString
                       put item 1 of pText into pText
                       return pText
                    end selectString
                    
                    on mouseUp
                       
                       set the cursor to watch
                       put empty into field "PlainText"
                       put the htmltext of widget "SPONBrowser" into tText
                       
                       # Bereinigen des Textes
                       
                       replace tab with empty in tText
                       replace "&nbsp;" with space in tText
                       
                       # Extrahiere dieTiteltexte zwischen <h1 und </h1> 
                       
                       put selectString(tText, "<h1 class=" & quote &"so-hdln" & quote & ">", "</h1>")  into tSnippet
                       put removeHTML(tSnippet) & cr & cr  after tPureText
                       
                       
                       # Extrahiere Titel-Unterschriften zwischen <h2> und </h2> 
                       
                       put "<" & selectString(tText, "<h2", "</h2>") into tSnippet
                       put removeHTML(tSnippet) & cr & cr  after tPureText
                       
                       
                       # Extrahiere Artikel-Intro-Text
                       
                       set itemdelimiter to "<p class=" & quote & "article-intro" & quote & ">" 
                       repeat with i = 2 to the number of items of tText
                          
                          put selectString(item i of tText, "<strong>", "</p>")  into tSnippet
                          put removeHTML(tSnippet) & cr & cr  after tPureText
                          
                       end repeat
                       
                       
                       # Extrahiere Autoren-Info
                       
                       put "Von" && selectString(tText, "rel=" & quote & "author" & quote & ">" , "</a>") into tAuthor
                       if tAuthor is not empty then put tAuthor & cr & cr after tPureText
                       
                       
                       # Extrahiere die "normalen" Texte zwischen <p> und </p> 
                       
                       set itemdelimiter to "<p>"
                       repeat with i = 2 to the number of items of tText
                          
                          put "<p>" & item i of tText into tSnippet
                          put selectString(tSnippet, "<p>", "</p>")  into tSnippet
                          put removeHTML(tSnippet) & cr & cr  after tPureText
                          
                       end repeat
                       
                       # Entfernen von leeren Doppelzeilen
                       
                       repeat while tPureText contains cr & cr & cr
                          replace cr & cr & cr with cr & cr in tPureText
                       end repeat
                       
                       put tPureText into fld "PlainText"
                       set the cursor to arrow
                       
                    end mouseUp
                    
                  • #5688
                    hauke
                    Administrator

                      Hallo Torsten,

                      cool – da ist wirklich was Nützliches bei herausgekommen. Danke fürs Teilen!

                      Hauke

                  Ansicht von 7 Antwort-Themen
                  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.