Ich bin auf der Suche, nach einer Möglichkeit eine HTML Tabellen einzulesen. Das Problem ist zu einem, das die Seiten nicht immer zu 100% gleich sein sind und das die Werte nicht immer die gleiche Länge haben. Ich wollte mir die HTML Datei herunterladen und danach per FindString mir die Daten suchen, das klappt aber eben nur mit festen Längen gut, also bleibt nur CreateRegularExpression was durch seine Mächtigkeit leider auch anfällig ist, habt ihr schon mal eine solche Problem in anderen Zusammenhang gelöst, vielleicht eine Tabelle erstmals zu reduzieren und danach suchen? Ich bin für jede Idee Dankbar
Titel korrigiert --Andesdaf
HTML Tabelle einlesen
Re: HMLT Tabelle einlesen
wenn es sauber geschriebenes HTML (XHTML) ist, kannst Du versuchen, die
Tabelle als XML zu laden und mit XMLNodeFromPath() & Co auszulesen.
Grüße ... Kiffi
Tabelle als XML zu laden und mit XMLNodeFromPath() & Co auszulesen.
Grüße ... Kiffi
a²+b²=mc²
Re: HMLT Tabelle einlesen
Hallo Kiffi,
ich bin ja immer in "Sachen Drucker unterwegs". Webserver ist von 1995 oder so, da habe ich klaube ich keine Chance. ich habe mal wieder ein Beispiel aus AutoIT, das ist das ganz Einfach....
Das sieh so aus:
geht das in PB auch irgendwie?
ich bin ja immer in "Sachen Drucker unterwegs". Webserver ist von 1995 oder so, da habe ich klaube ich keine Chance. ich habe mal wieder ein Beispiel aus AutoIT, das ist das ganz Einfach....
Code: Alles auswählen
#include <IE.au3>
#include <array.au3>
Local $url = 'http://192.168.110.211/ssi/xprtutil.htm'
Local $oIE = _IECreate($url, 0, 0)
Local $oTable = _IETableGetCollection($oIE, 6)
Local $array = _IETableWriteToArray($oTable, True)
_ArrayDisplay($array)
_IEQuit($oIE)
Code: Alles auswählen
[0]|Controller-Version|11.XXX
[1]|BSP-Version|HXXXXXXX
[2]|Akt. Benutzer-Einstellung|0
[3]|Festplatte|Aktuell (76319 MB)
[4]|Diskettenlaufwerk|Kein
[5]|Speicher(Megabyte)|512
[6]|NIC Firmware-Revision|Kein
[7]|NIC Hardware-Adresse|Kein
[8]|Erweiterte Netzwerk-Adresse|00:XX
[9]|Erweiterter Netzwerk-Status|BEREIT
[10]|Hauptinstall.schlüssel (KIK)|742-XXXXX
[11]|Scanner-Typ|XEROX WIDE FORMAT
[12]|Scanner Hardware-Adresse|26:XXXX
[13]|Scanner-Version|3.5.10XXXX
[14]|IOT Hardware-Adresse|00:XXX
[15]|IOT-Version|03.XXXX
[16]|Blink-Format|0 MB
Re: HMLT Tabelle einlesen
joh. Mal auf die Schnelle hingeschlurt:kunstlust hat geschrieben:geht das in PB auch irgendwie?
Code: Alles auswählen
IncludePath "[DeinPfadZu]\COMatePLUS\"
XIncludeFile "COMatePLUS.pbi"
EnableExplicit
#frmMain = 0
#frmMain_WebGadget = 0
Define WB.COMateObject
Define Tabelle.COMateObject
Define Row.COMateObject
Define Cell.COMateObject
Define AnzahlTabellen, TabellenZaehler
Define AnzahlZeilen, ZeilenZaehler
Define AnzahlSpalten, SpaltenZaehler
NewMap HtmlTableMap.s()
If OpenWindow(#frmMain, 0, 0, 0, 0, "", #PB_Window_Invisible)
WebGadget(#frmMain_WebGadget, 0, 0, 0, 0, "http://www.purebasic.fr/german/viewtopic.php?f=3&t=25989")
; make sure that the page was completely loaded
Repeat
While WindowEvent() : Delay(1) : Wend
If GetGadgetAttribute(#frmMain_WebGadget, #PB_Web_Busy) = 0 : Break : EndIf
ForEver
WB = COMate_WrapCOMObject(GetWindowLong_(GadgetID(#frmMain_WebGadget), #GWL_USERDATA))
If WB
AnzahlTabellen = WB\GetIntegerProperty("document\GetElementsByTagName('table')\length")
;Debug "Anzahl Tabellen: " + Str(AnzahlTabellen)
For TabellenZaehler = 0 To AnzahlTabellen - 1
;Debug "Tabelle: " + Str(TabellenZaehler)
Tabelle = WB\GetObjectProperty("document\GetElementsByTagName('table')\Item(" + Str(TabellenZaehler) + ")")
If Tabelle
AnzahlZeilen = Tabelle\GetIntegerProperty("rows\length")
;Debug "Anzahl Zeilen: " + Str(AnzahlZeilen)
For ZeilenZaehler = 0 To AnzahlZeilen - 1
;Debug "Zeile: " + Str(ZeilenZaehler)
Row = Tabelle\GetObjectProperty("rows\item(" + Str(ZeilenZaehler) + ")")
If Row
AnzahlSpalten = Row\GetIntegerProperty("cells\length")
For SpaltenZaehler = 0 To AnzahlSpalten - 1
Cell = Row\GetObjectProperty("cells\item(" + Str(SpaltenZaehler) + ")")
If Cell
HtmlTableMap("T" + Str(TabellenZaehler+1) + "R" + Str(ZeilenZaehler+1) + "C" + Str(SpaltenZaehler+1))=Cell\GetStringProperty("innerText")
Cell\Release()
EndIf
Next
Row\Release()
EndIf
Next
Tabelle\Release()
EndIf
Next
WB\Release()
EndIf
EndIf
Debug HtmlTableMap("T21R1C1")Grüße ... Kiffi
a²+b²=mc²
Re: HMLT Tabelle einlesen
Hallo Kiffi,
das ist ein toller Ansatz, dachte mir das es über die COM gehen müssen. Danke in jedem Fall für die Hilfe, darauf kann ich bauen.
Gruß Lars
das ist ein toller Ansatz, dachte mir das es über die COM gehen müssen. Danke in jedem Fall für die Hilfe, darauf kann ich bauen.
Gruß Lars
Re: HMLT Tabelle einlesen
@kunstlust:
korrigiere doch bitte die Überschrift, da steht zur Zeit HMLT (Hybrid Machine Learning Tools) und nicht HTML (Hypertext Markup Language)
korrigiere doch bitte die Überschrift, da steht zur Zeit HMLT (Hybrid Machine Learning Tools) und nicht HTML (Hypertext Markup Language)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
HTML Tabelle einlesen
Sorry Stargate, komischer Dreher...