Startseite › Foren › Deutsches LiveCode-Forum › Anzeige von "purem" Text von Webseiten
Schlagwörter: html
- Dieses Thema hat 7 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 6 Jahren, 5 Monaten von hauke.
-
AutorBeiträge
-
-
Mai 25, 2018 um 13:13 Uhr #5672
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? -
Mai 25, 2018 um 13:19 Uhr #5674
Hi Torsten,
ich habe gestern im englischen Forum einen entsprechencden Tip abgegeben:
http://forums.livecode.com/viewtopic.php?f=7&t=30726&start=45#p1675571. 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
-
Mai 25, 2018 um 13:42 Uhr #5676
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? -
Mai 25, 2018 um 13:46 Uhr #5678
Du wirst den Quellcode komplett manuell “parsen” müssen.
Vielleicht hilft RegEx, aber das ist nicht meine Welt… -
Mai 25, 2018 um 13:55 Uhr #5680
Alles klar, dann also auf die harte Tour 🙂
Wenn ich was Pfiffiges finde, poste ich es hier.
-
Mai 25, 2018 um 17:28 Uhr #5684
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
-
Mai 25, 2018 um 17:55 Uhr #5686
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ügenZum 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 " " 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
-
Mai 25, 2018 um 19:10 Uhr #5688
Hallo Torsten,
cool – da ist wirklich was Nützliches bei herausgekommen. Danke fürs Teilen!
Hauke
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.