Extrahieren des reinen Textes aus einer HTML-Seite.

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von NicTheQuick »

Ich würde das trotzdem mit der XML-Library machen. Wichtig dabei ist, dass es einen root-Knoten gibt. Bei HTML ist das üblicherweise das <html>-Tag. Und heutzutage gibt es kaum noch normales HTML, eigentlich ist fast alles immer XHTML. OpenOffice sollte das genauso machen.

Der folgende Code iteriert über alle Tags und fügt bei jedem Text-Knoten, der nicht leer ist, noch einen Zeilenumbruch am Anfang und Ende hinzu.

Code: Alles auswählen

EnableExplicit

Define HTML.S

html = ~"<li><p style=\"margin-bottom: 0cm;\">12-Gefährdung des Kindeswohl</p></li>" + 
       ~"<li><p style=\"margin-bottom: 0cm;\">13-Eingeschränkte Erziehungskompetenz der Eltern</p></li>" + 
       ~"<li><p style=\"margin-bottom: 0cm;\">14-Belastungen des jungen Menschen durch Problemlagen der Eltern</p></li>" + 
       ~"<li><p style=\"margin-bottom: 0cm;\">15-Belastungen des jungen Menschen durch familiäre Konflikte</p></li>" + 
       ~"<li><p style=\"margin-bottom: 0cm;\">16-Auffälligkeiten im sozialen Verhalten</p></li>";

Procedure iterateXML(node.i)
	Protected text.s
	Protected child.i = ChildXMLNode(node)
	
	If XMLNodeType(node) <> #PB_XML_Root
		text = Trim(GetXMLNodeText(node))
		If text <> ""
			SetXMLNodeText(node, ~"\n" + text + ~"\n")
		EndIf
	EndIf
	
	While child
		iterateXML(child)
		child = NextXMLNode(child)
	Wend
EndProcedure


Define xml.i = ParseXML(#PB_Any, "<html>" + html + "</html>")

iterateXML(RootXMLNode(xml))

Debug ComposeXML(xml, #PB_XML_NoDeclaration)
Ergebnis:
<html><li><p style="margin-bottom: 0cm;">
12-Gefährdung des Kindeswohl
</p></li><li><p style="margin-bottom: 0cm;">
13-Eingeschränkte Erziehungskompetenz der Eltern
</p></li><li><p style="margin-bottom: 0cm;">
14-Belastungen des jungen Menschen durch Problemlagen der Eltern
</p></li><li><p style="margin-bottom: 0cm;">
15-Belastungen des jungen Menschen durch familiäre Konflikte
</p></li><li><p style="margin-bottom: 0cm;">
16-Auffälligkeiten im sozialen Verhalten
</p></li></html>
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von brigitte2018 »

Danke! - Ich werde das Ausprobieren. Wobei ich befürchte, dass das nur in der speziellen Form funktioniert. Die Formularentwicklung erfolgt auch immer mit Open Office, aber mit Libre Office wird es auch gehen, bei Word hakt es allerdings manchmal. Sei doch so nett und analysiere meinen letzten Eintrag in Bezug auf das gezeigte Ergebnis. Brigitte.
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von dige »

@Kiffi +1
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von NicTheQuick »

brigitte2018 hat geschrieben: 13.11.2023 19:15 Danke! - Ich werde das Ausprobieren. Wobei ich befürchte, dass das nur in der speziellen Form funktioniert. Die Formularentwicklung erfolgt auch immer mit Open Office, aber mit Libre Office wird es auch gehen, bei Word hakt es allerdings manchmal. Sei doch so nett und analysiere meinen letzten Eintrag in Bezug auf das gezeigte Ergebnis. Brigitte.
Dein letzter längerer Beitrag hat nichts mehr mit dem ersten Post zu tun, aber den habe ich beantwortet. Auch wenn ich nicht ganz verstehe wie das deinem Sohn bei seiner Arbeit helfen soll. Ist er selbstständig? Oder warum hat die Firma, für die er arbeitet, keine Tools um Formulare zu erstellen? Ich kann mir kaum vorstellen, dass auf diese Weise gearbeitet wird.

Ich werde mir definitiv nicht dein altes Basic anschauen.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von DarkDragon »

Ich habe es gerade auch so ähnlich wie NicTheQuick implementiert, zur Not muss man noch an der ein oder anderen Stelle trimmen, du brauchst ja das ganze HTML dann wohl nicht mehr, wenn ich deinen letzten großen Beitrag richtig verstanden habe. Die Zahlen vor deinen Zeilen sind mir noch Schleierhaft.

Code: Alles auswählen

EnableExplicit

Define html.s

html = "<html>" + #LF$ +
       "<head></head>" + #LF$ +
       "<body>" + #LF$ +
       "<ul>" + #LF$ +
       "<li>Möbel nach Ihren Wünschen</li>" + #LF$ +
       "<ul>" + #LF$ +
       "<li>Küchenmöbel</li>" + #LF$ +
       "<li>Regale und Schrankwände</li>" + #LF$ +
       "<li>Badezimmermöbel</li>" + #LF$ +
       "</ul>" + #LF$ +
       "</body>" + #LF$ +
       "</html>"

Procedure.s ExtractTexts(node.i)
    Protected count.i
    Protected i.i
    Protected result.s
    
    result = Trim(GetXMLNodeText(node))
    
    count = XMLChildCount(node)
    For i = 1 To count
        result + #LF$ + ExtractTexts(ChildXMLNode(node, i))
    Next i
    
    ProcedureReturn result
EndProcedure

Define xml.i

xml = ParseXML(#PB_Any, html)

Debug ExtractTexts(RootXMLNode(xml))
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von H.Brill »

<Die Zahlen vor deinen Zeilen sind mir noch Schleierhaft.>

Ich nehme an, daß das eine Art Sammlung von Themen werden soll.
Was wir nicht wissen, ist, ob die Themen dann fortlaufend in einer
einzigen Texrdatei oder mehreren Textdateien gespeichert werden
sollen. Oder sollen sie etwa durch neue ausgetauscht werden, wenn
das Thema Nr. x schon vorhanden ist ?

etwa
12-Gefährdung des Kindeswohl
durch
12-blablabla

Dementsprechend könnte man dann mit einer LinkedList oder Preference arbeiten.
Bei den References hat man halt den Vorteil, daß z.b. oben der Key mit Wert 12 automatisch
beim Schreiben ersetzt oder andernfalls neu geschrieben wird.

Ich meine, sowas nimmt ja dann einem eine Menge Arbeit ab bzw. geht schneller.

Kommt jetzt auch darauf an, was sie mit der Textdatei vor hat. Ich persönlich würde
das gleich in eine .xml oder JSON wieder speichern. So hat man nicht soviel Arbeit,
wenn man noch Unterthemen o. ä. dazu machen will. Da kann man z.b. bei JSON mit
Unterobjekten oder sogar Listen arbeiten. Wäre dann viel flexibler.
PB 6.10
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von brigitte2018 »

Danke an alle, die guten Willen gezeigt und hilfsbereit waren. Die Arroganz, gepaart mit 'Nicht-Zuhören-Wollen', Unterstellungen, usw. war leider auch dabei. Menschlichkeit und Hilfsbereitschaft sind immer ein Zeichen von wahrer Stärke.

Hier aber die Basis-Lösung der Trennung von 'tags' und sichtbaren Inhalt einer HTML-Datei mit 'chatgpt':
Ich habe mir erlaubt, nicht speziell nach einer Lösung unter 'pure basic' suchen zu lassen, dass könnte ja als Affront missverstanden werden.

https://chat.openai.com/share/d3f8e99a- ... 4c1ca76036

Wenn dieser Link nicht gewollt ist, kann ich den *chatgpt' auch normal auf eine Webseite schicken.
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von brigitte2018 »

Hallo, leider gibt der Link nur den ersten Teil her, wie ich gerade bemerken muss.

Hier der Text komplett mit beiden Teilen:

http://www.roehrig-hartmann.de/www/brigitte.html

Viel Spaß beim Lesen. Mir hat es jedenfalls Spaß gemacht.

LG, Brigitte.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von NicTheQuick »

Ist dein Problem jetzt gelöst oder nicht? Ich verstehe es nicht ganz.
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

Re: Extrahieren des reinen Textes aus einer HTML-Seite.

Beitrag von brigitte2018 »

... danke der Nachfrage. Die allgemeine Problemlösung liegt wie angenommen in den sichtbaren Teilen von HTML, die als Ergebnis in ">sichtbar<" vorliegen. Leider stellt der 'chatgpt' keine wirkliche Lösung vor und schreibt: "Leider unterstütze ich derzeit keine direkte Ausgabe von Pure Basic-Code. Dennoch kann ich Ihnen eine Struktur vorschlagen, die Sie als Grundlage für Ihr Programm verwenden können. "
Ich werde ihm noch den Weg zeigen. Im übrigen hast Du die Anforderungen völlig missverstanden. Es geht um die maschinelle Datenverwertung von bereits bestehenden Formularen und nicht umgekehrt. Ich wünsche einen schönen Nachmittag, Brigitte.
Antworten