HTML Dateien durchsuchen mit PB

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

HTML Dateien durchsuchen mit PB

Beitrag von N_Gnom »

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.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
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: HTML Dateien durchsuchen mit PB

Beitrag von NicTheQuick »

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.
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

Re: HTML Dateien durchsuchen mit PB

Beitrag von N_Gnom »

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.
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Re: HTML Dateien durchsuchen mit PB

Beitrag von Sven »

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.
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

Re: HTML Dateien durchsuchen mit PB

Beitrag von N_Gnom »

wie funktioniert das?
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
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: HTML Dateien durchsuchen mit PB

Beitrag von Derren »

Vergiss XML.
Das hier ist der PB-Code nur um dieses Bisschen XML zu parsen.

Bild

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
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:47, insgesamt 1-mal geändert.
~ DELETE ~
RehW
Beiträge: 15
Registriert: 03.03.2012 11:23

Re: HTML Dateien durchsuchen mit PB

Beitrag von RehW »

CodeCommander hat geschrieben:Typisch Anfänger-Vorgehensweise. Man macht nicht mit FindString und so. Viel zu langsam. Stichwort: Reguläre Ausdrücke
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.

Sorry, wenn ich jetzt auch nichts zum Thema schreibe, aber ich musste das jetzt einfach mal loswerden.
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:47, insgesamt 1-mal geändert.
~ DELETE ~
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: HTML Dateien durchsuchen mit PB

Beitrag von Micha122 »

wie funktioniert das?
damit kenn ich mich nun garnicht aus
Sven meinte so etwas:

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
Ist leider nicht sehr komfortabel, weil man den Text per Maus zunächst selektieren muss. :oops:

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

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