HTML Dateien durchsuchen mit PB
HTML Dateien durchsuchen mit PB
Ich habe einen Ordner mit unterordnern in denen sich viele HTML Dateien befinden.
In diesen möchte ich den Text welcher die jeweilige html datei letztendlich ausgibt durchsuchen.
Das ganze html zeugs soll dabei aber nicht durchsucht werden, sondern eben nur der anzeigbare Text.
Letztlich möchte ich bei einem Treffer die html Seiten wo etwas gefunden wurde in einer temporären html seite als liste mit anklickbaren links speichern und diese anzeigen.
Vielleicht kann mir da ja jemand paar tips geben.
edit: die Dateinamen sollen bei der Suche auf Wunsch auch mit durchsucht werden.
In diesen möchte ich den Text welcher die jeweilige html datei letztendlich ausgibt durchsuchen.
Das ganze html zeugs soll dabei aber nicht durchsucht werden, sondern eben nur der anzeigbare Text.
Letztlich möchte ich bei einem Treffer die html Seiten wo etwas gefunden wurde in einer temporären html seite als liste mit anklickbaren links speichern und diese anzeigen.
Vielleicht kann mir da ja jemand paar tips geben.
edit: die Dateinamen sollen bei der Suche auf Wunsch auch mit durchsucht werden.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
- 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: HTML Dateien durchsuchen mit PB
Können die HTML-Seiten JS und/oder komplexes CSS enthalten? Das wäre dann schwierig immer nur den Text rauszufiltern, der auch tatsächlich angezeigt wird.
Wenn es aber nur darum geht die HTML-Tags heraus zu filtern und möglicherweise Skripte, dann sollte das ganz einfach gehen, indem man einfach eine kleine Procedure schreibt, die die HTML-Tags entfernt vor dem Suchen. Wenn es allerdings valides XHTML ist, könntest du auch den XML-Parser von PB nutzen und einfach alle Knoten durchsuchen.
Wenn es aber nur darum geht die HTML-Tags heraus zu filtern und möglicherweise Skripte, dann sollte das ganz einfach gehen, indem man einfach eine kleine Procedure schreibt, die die HTML-Tags entfernt vor dem Suchen. Wenn es allerdings valides XHTML ist, könntest du auch den XML-Parser von PB nutzen und einfach alle Knoten durchsuchen.
Re: HTML Dateien durchsuchen mit PB
Also css wird per externes stylesheet genutzt.
Und die Scripte die verwendet werden kommen alle vorm BODY, den man ja dann als Einstiegspunkt nehmen könnte.
Der Rest sind html tags für die Formatierung und Bilder einbinden.
Wie könnte man das Rausfiltern?
< suchen und alles bis > ignorieren?
Müsste ich dann alles was in der Datei übrigbleiben würde in eine temporäre Datei speichern?
Für einen Denkanstoss wäre ich dankbar.
Ich hab mit den Filecommands nämlich noch nie was gemacht.
Und die Scripte die verwendet werden kommen alle vorm BODY, den man ja dann als Einstiegspunkt nehmen könnte.
Der Rest sind html tags für die Formatierung und Bilder einbinden.
Wie könnte man das Rausfiltern?
< suchen und alles bis > ignorieren?
Müsste ich dann alles was in der Datei übrigbleiben würde in eine temporäre Datei speichern?
Für einen Denkanstoss wäre ich dankbar.
Ich hab mit den Filecommands nämlich noch nie was gemacht.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Re: HTML Dateien durchsuchen mit PB
Mal eine Idee, wie Du Dir das HTML-Parsen sparen könntest:
Die Datei in einem Webgadget öffnen, damit fallen die HTML-Tags weg. Den angezeigten Text in die Zwischenablage kopieren, da sollte der dann als Plaintext drinstehen. Die Zwischenablage in einen String speichern, den Du normal nach Deinem Suchstring durchsuchst.
Die Dateinamen musst Du getrennt durchsuchen, aber die musst Du eh parsen.
Die Datei in einem Webgadget öffnen, damit fallen die HTML-Tags weg. Den angezeigten Text in die Zwischenablage kopieren, da sollte der dann als Plaintext drinstehen. Die Zwischenablage in einen String speichern, den Du normal nach Deinem Suchstring durchsuchst.
Die Dateinamen musst Du getrennt durchsuchen, aber die musst Du eh parsen.
Re: HTML Dateien durchsuchen mit PB
wie funktioniert das?
damit kenn ich mich nun garnicht aus
damit kenn ich mich nun garnicht aus
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Re: HTML Dateien durchsuchen mit PB
Vergiss XML.
Das hier ist der PB-Code nur um dieses Bisschen XML zu parsen.

Im Prinzip musst du einfach nur von ">" zu "<" springen (mit FindString()) und dann alles dazwischen steht temporär in eine Linked List oder so speichern, und diese dann am Ende nach deinem Text zu durchsuchen.
Anfangen kannst du dann eigentlich bei "<body". Sehr unwahrscheinlich dass du auf eine HTML-Datei triffst in der "< body >" steht, oder dass "<body" in einem JavaScript Segment im Header vorkommt.
Das hier ist der PB-Code nur um dieses Bisschen XML zu parsen.

Code: Alles auswählen
<document>
<entry>
<title value="Die Bibel" />
<author value="*list">
<li value="Matthäus" />
<li value="Markus" />
<li value="Lukas" />
<li value="Andere" />
</author>
<description value="*data">Zum Inhalt:
- Das alte Testament
- Das neue Testament
- Erläuterungen</description>
</entry>
<entry>
<title value="Programmieren mit PB" />
<author value="Basic, Pure" />
<dateOfPurchase value="1999" />
</entry>
</document>
Im Prinzip musst du einfach nur von ">" zu "<" springen (mit FindString()) und dann alles dazwischen steht temporär in eine Linked List oder so speichern, und diese dann am Ende nach deinem Text zu durchsuchen.
Anfangen kannst du dann eigentlich bei "<body". Sehr unwahrscheinlich dass du auf eine HTML-Datei triffst in der "< body >" steht, oder dass "<body" in einem JavaScript Segment im Header vorkommt.
Signatur und so
- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:47, insgesamt 1-mal geändert.
~ DELETE ~
Re: HTML Dateien durchsuchen mit PB
Warum gibst Du kein Beispiel an? Du scheins ja kein Anfäger mehr zu sein, wenn ich Deinen Beitrag so lese. Ausserdem fällt mir auf das ich in letzter Zeit viele Beiträge von Dir lese die nicht hilfreich sind und nur nerven. Zum Teil kommen sie mir auch ignorant und beleidigend vor. Wenn Du kein Beispiel vorlegen willst, dann antworte doch einfach nicht.CodeCommander hat geschrieben:Typisch Anfänger-Vorgehensweise. Man macht nicht mit FindString und so. Viel zu langsam. Stichwort: Reguläre Ausdrücke
Sorry, wenn ich jetzt auch nichts zum Thema schreibe, aber ich musste das jetzt einfach mal loswerden.
- CodeCommander
- Beiträge: 213
- Registriert: 02.03.2014 16:06
~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:47, insgesamt 1-mal geändert.
~ DELETE ~
Re: HTML Dateien durchsuchen mit PB
Sven meinte so etwas:wie funktioniert das?
damit kenn ich mich nun garnicht aus
Code: Alles auswählen
Global Window_3
Global WebView_0, Button_0, Editor_0
Declare Text_holen()
Procedure OpenWindow_3(x = 0, y = 0, width = 970, height = 500)
Window_3 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
WebView_0 = WebGadget(#PB_Any, 30, 10, 910, 360, "http://forums.purebasic.com/german/viewtopic.php?f=3&t=28513&sid=08c62833b41c1e7edaeebbc907940d55")
Button_0 = ButtonGadget(#PB_Any, 30, 460, 100, 30, "Text holen")
Editor_0 = EditorGadget(#PB_Any, 520, 380, 420, 110, #PB_Editor_WordWrap)
EndProcedure
Procedure Window_3_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_0
Text_holen()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
OpenWindow_3()
Repeat
event = WaitWindowEvent()
Until Window_3_Events(event) = #False
End
Procedure Text_holen()
text.s=GetGadgetItemText(WebView_0,#PB_Web_SelectedText)
SetGadgetText(Editor_0,text)
EndProcedure

@CodeCommander:
Ein kurzes Beispiel würde mich auch interessieren.

Gruß
Barcodes for PureBasic - http://micha122.bplaced.net/