Extrahieren des reinen Textes aus einer HTML-Seite.

Anfängerfragen zum Programmieren mit PureBasic.
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 verstehe nicht so ganz was nun eigentlich gewollt ist. Der Titel sagt aus, dass man nur den Text will (alle Textknoten im HTML zusammengehängt). Das ist es aber wohl nicht.

Im Beitragstext steht eine Zerlegung in Text und XML Teile wodurch eine einfache Ersetzung des Inhalts ermöglicht wird. Das ganze wohl dafür, dass man eine Art Vorlage ausfüllen kann. Template ist hier das Stichwort und eigentlich nimmt man dafür Platzhalter, die mit ReplaceString ersetzt werden. So in etwa:

Code: Alles auswählen

Debug ReplaceString("<html><head></head><body>Hier kommt mein Inhalt: %TEXT%</body></html>", "%TEXT%", "Hallo")
Wenn es komplizierter sein soll kann man HTML üblicherweise auch mit XML Parsern parsen, aber ich weiß nicht ob PureBasics Expat das kann, ich glaube nicht.
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 »

Ich glaube auch, daß es mit dem XML-Parser etwas schwieriger wird.
Da sind ja die HTML-Formatierungsanweisungen auch als Knoten (Nodes) mit drin,
obwohl sie ja in diesem Falle ohne Bedeutung sind. XML ist da besser geeignet, wenn
man Hauptknoten und Unterknoten, die nur in spitzen Klammern stehen, zu untersuchen hat.
HTML ist halt kein XML. Und vorher das ganze von HTML in XML umzudröseln, macht nur
zusätzliche Arbeit. So sehe ich das mal. Die Daten liegen ja mal in HTML vor und das
möchte die Fragestellerin ja auch nicht ändern.

Man kann ja auch auf verschiedene Weisen vorgehen, wie du oben schon schreibst.
Wenn man mit

Code: Alles auswählen

erg$ = ReplaceString(HTMLStr$, "<li><p style=\"margin-bottom: 0cm;\">", "") 
löscht, hat man ja schon Teil 1. Wenn man dann nochmals das Ergebnis nochmals mit

Code: Alles auswählen

erg$ = ReplaceString( erg$, "</p></li>\r\n", "") 
für den hinteren Teil anwendet, müßte ja das Gewünschte übrig bleiben.
Oder sehe ich das nun falsch ?
PB 6.10
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 »

Geht auch so, wie gedacht, unter der Vorraussetzung, daß die HTML-Formatierungen immer gleich bkeiben. :

Code: Alles auswählen

Dim zeilen$(5)
zeilen$(0) = ~"<li><p style=\"margin-bottom: 0cm;\">12-Gefährdung des Kindeswohl</p></li>\r\n"
zeilen$(1) = ~"<li><p style=\"margin-bottom: 0cm;\">13-Eingeschränkte Erziehungskompetenz der Eltern</p></li>\r\n" 
zeilen$(2) = ~"<li><p style=\"margin-bottom: 0cm;\">14-Belastungen des jungen Menschen durch Problemlagen der Eltern</p></li>\r\n"
zeilen$(3) = ~"<li><p style=\"margin-bottom: 0cm;\">15-Belastungen des jungen Menschen durch familiäre Konflikte</p></li>\r\n"
zeilen$(4) = ~"<li><p style=\"margin-bottom: 0cm;\">16-Auffälligkeiten im sozialen Verhalten</p></li>\r\n"

For k = 0 To 4
  erg$ = ReplaceString(zeilen$(k), ~"<li><p style=\"margin-bottom: 0cm;\">", "")
  erg$ = ReplaceString(erg$, ~"</p></li>\r\n", "")
  Debug erg$
Next
PB 6.10
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 »

H.Brill hat geschrieben: 11.11.2023 12:37HTML ist halt kein XML. Und vorher das ganze von HTML in XML umzudröseln, macht nur
zusätzliche Arbeit. So sehe ich das mal. Die Daten liegen ja mal in HTML vor und das
möchte die Fragestellerin ja auch nicht ändern.
Nein, aber viele XML parser haben einen HTML modus explizit um die Differenzen aufzulösen. Z.B. lxml in Python kann HTML: https://lxml.de/lxmlhtml.html

Aber kann expat das? Am doctype wäre das ja auch erkennbar.
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 »

Selbst, wenn so ein XML-Parser HTML kann, so muß er sich trotzdem durch die
einzelnen TAGs hangeln. Ist ja bei dem XML-Parser bei PB oder auch JSON
genauso.

Da gefällt mir meine obige Lösung für diesen speziellen Fall aber besser.
Man kann halt vieles machen. Ich habe auch schon mal das JSON als Datenbank
mißbraucht, indem ich die Hauptobjekte einfach durchnummeriert hatte und
in den Unterobjekten meine Daten geschrieben hatte.
Da konnte ich dann wunderbar mittels einer Schleife und deren Index durchhangeln
und meine 'Datensätze' finden.
PB 6.10
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 »

Das stimmt natürlich, aber wie gesagt ist die Aufgabenstellung mir noch zu schwammig, bzw. teilweise widersprüchlich oder sie änderte sich im Laufe des Threads. Extrahieren des reinen Textes ist halt was anderes als HTML seriell aufteilen oder Vorlagen ausfüllen.
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.
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

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

Beitrag von brigitte2018 »

Hallo und guten Tag!
Wenn meine Urenkeltochter zu Besuch ist, dann kommt sie häufig zu mir und sagt: "Ich habe geschwurbelt". Und dann sage ich, das macht nichts, 'ich schwurble auch'. Und so dreht sich der Kreis. Als ich vor rund 30 Jahren <noch nicht so des Schwurbelns mächtig war>, den Programmieraufwand für Listdrucke (Fibu, Lohn, Fakturierung, usw.) auf einen Laserdrucker mit der speziellen Druckersprache auf 'Deubel' komm' 'raus minimieren musste, 'Netscape' in aller Munde war, 'Windows', der Fluch des Jahrhundert, die Geschäftsführer in aller Welt verzauberte, IT noch quasi unbekannt war, die Welt aber endlich wusste, wo's lang geht, da...ja da musste ich mir etwas einfallen lassen. Und so ging ich in den Wald, sah zunächst ganz viele Bäume und nicht mehr den Wald. Doch dann, doch dann kam eine Fee und zeigte mir die Lösung. Und sie war geradezu quantenphysikalisch einfach, sie bestand nur aus zwei Zeichen ">" und "<".
"<xml>" oder "<>" ist Anweisung für den Browser........ aber ">Schwurbelgeier<" wird vom Browser angezeigt. So einfach ist das, natürlich wenn man es weiß. In 'Selfhtml' kann man das so lernen: "

<ul>
<li>Möbel nach Ihren Wünschen
<ul>
<li>Küchenmöbel</li>
<li>Regale und Schrankwände</li>
<li>Badezimmermöbel</li>
</ul>

Soooooooooooooooooo! Und jetzt muss man Schritt für Schritt für Schritt daraus etwas machen. Das geht klugerweise in mehreren Stufen programmiert.
Die letzte Programmeinheit zaubert nachfolgende indexsequentielle Datei und steuert damit das Druckprogramm für alle Listen und Formulare, taugt auch als Eingabeformular, ja Datenbank, usw. :

--------------------------------------------------------
00001.0016:Stefan
00002.0019:Normal
00003.0022:Stefan
00004.0025:2
00005.0028:2023-01-04T22:07:00Z
00006.0031:2023-01-04T23:01:00Z
00007.0034:2023-01-04T23:01:00Z
00008.0037:1
00009.0040:105
00010.0043:663
00011.0046:5
00012.0049:1
00013.0052:767
00014.0055:16.00
00015.0067:Print
00016.0070:Clean
00017.0073:Clean
00018.0076:false
00019.0080:21
00020.0084:false
00021.0087:false
00022.0090:false
00023.0094:DE
00024.0097:X-NONE
00025.0100:X-NONE
00026.0506:/* Style Definitions */table.MsoNormalTable{mso-style-name:"Normale Tabelle";mso-tstyle-rowband-size:0;mso-tstyle-colband-size:0;mso-style-noshow:yes;mso-style-priority:99;mso-style-parent:"";mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-para-margin:0cm;mso-pagination:widow-orphan;font-size:10.0pt;font-family:"Times New Roman",serif;}
00027.0533:Modul
00028.0544:ABRDAT06
00029.0555:PsychotherapeutischePraxis
00030.0566:KV-Nr.
00031.0577:1869 333 00
00032.0589:Bereich
00033.0598:Abrechnung
00034.0607:Sitzungen
00035.0616:Datum
00036.0625:07.02.2022
00037.0636:Praxisort
00038.0646:Westerwald
00039.0657:Patientenkontakte
00040.0667:Seite
00041.0677:001
00042.0689:Zeitraum
00043.0698:Q1/2023
00044.0707:Hand-Terminkalender
00045.0716:Erstellt
00046.0725:01.02.2022
00047.0747:Nr.
00048.0752:Name
00049.0757:Vorname
00050.0762:Uhrzeit
00051.0767:Art
00052.0772:L&auml;nge
00053.0777:Ersch.
00054.0782:Hinweis
-------------------------------------------------
Jede Datenzeile beginnt mit einer 5-stelligen laufenden Nummer und danach erfolgt die Satznummer des aufbereiteten HTML-Codes.
Und schon ist die Lösung perfekt. Mit diesem "Lösungspaket" wurden wahrscheinlich mehr als 1 Million Druckseiten erzeugt.
Ich hoffe, ich habe jetzt schwurbelfreie Informationen geliefert und versichere, dass auch schon vor 30 Jahren ordentlich programmiert wurde.
Aufgrund guter Werkzeuge war die Softwareproduktion allerdings zielorientierter und damit schneller... Bilder mussten noch nicht gemalt werden.
Hoch lebe das Ruhrgebiet!
Brigitte
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

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

Beitrag von Kiffi »

:freak:

so langsam habe ich das Gefühl, dass "brigitte2018" ein KI-Bot ist, der uns alle auf die Probe stellen will...
a²+b²=mc²
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

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

Beitrag von brigitte2018 »

... so langsam glaube ich nichts mehr. KI ist doch viel zu blöd und quatscht doch nur gesammelten Mist. Also, dass ich als KI noch Karriere machen sollte, hätte ich nie gedacht.
brigitte2018
Beiträge: 35
Registriert: 16.07.2018 11:14

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

Beitrag von brigitte2018 »

... ich bleibe mal für eine gewisse Zeit online. Es ist doch eigentlich alles einfach zu verstehen. Ich habe vor langer Zeit ein Problem schon längst gelöst und muss es nun nach "Kisuaheli" übertragen. Das ist nervig und ich habe ein Angebot gemacht (das "know how'' kostenlos weiter zu geben) und bat dabei um Hilfestellung. Es sind zwar viele Wölfe in diesem Land, aber nicht jeder ist ein Wolf.
Antworten