httpmod und regular Expression

Begonnen von t_schlueter, 18 März 2017, 14:23:40

Vorheriges Thema - Nächstes Thema

t_schlueter

Hallo Freaks,

ich würde gerne mal auf Eure Hilfe zurückgreifen.
Ich möchte gerne folgende Seite (http://xrf787.de/index.php) mit dem httpmod auslesen und mir dann die in der Tabelle dargestellten Daten als readings vorzuhalten um sie in Tabletui einzubinden.
Es geht dabei nur um 2 Spalten "Callsign" und "Last Heard" und wenn möglich um die 3 Spalte  "Via Source" was aber nicht unbedingt sein muss.
Mit folgender Regular Expression die ich hier (http://chris.photobooks.com/regex/ getestet habe kann ich zumindest die Spalte Callsign schon herausfiltern <a href="https://www.qrz.com/db/D\w+" class="pl" target="_blank">(D\w+)</a></td>

Leider komme ich da aber nicht weiter. Ferner habe ich Probleme das ganze dann umzusetzen mit dem Modul httpmod.

Vielleicht hat ja einer von Euch am Wochenende nichts vor (Wetter ist eh schlecht :-)) und kann sich das mal ansehen.


viegener

Ich sehe auf der Seite keine Tabelle...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

t_schlueter

Zitat von: viegener am 18 März 2017, 15:08:42
Ich sehe auf der Seite keine Tabelle...
OK, sieht wie eine aus ist es dann aber wohl nicht.

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

t_schlueter

Zitat von: JoWiemann am 18 März 2017, 16:01:55
und ich sehe nur angefügtes...
Oh sorry, mein Fehler :-)
Hab eben erst gecheckt...

hier der richtige Link http://xrf787.de/index.php

JoWiemann

Möchtest Du eine Spalte komplett im reading? Und wie sollen die Inhalte, also die Zeilen, im reading abgelegt werden?


Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

t_schlueter

#6
Zitat von: JoWiemann am 18 März 2017, 16:25:30
Möchtest Du eine Spalte komplett im reading? Und wie sollen die Inhalte, also die Zeilen, im reading abgelegt werden?


Grüße Jörg
Mal sehen ob ich das hier richtig erklären kann...
Ich habe mir eben mal das Modul Calllist angesehen das ich in FHem integriert habe. So stelle ich mir auch die Ausgabe für die o.g. Seite vor. Ich möchte dann gerne eine Ausgabe auf dem tablet erstellen die in etwa so aussieht:

Callsign     Via Source     Last Heard

DG4LAX     XRF787C       18.03.17 17:35

Wobei es für ein Reading schön wäre wenn ich z.b. damit unter umständen ein Notify erstellen könnte wenn z.b das Call "DG4LAX" gehört bzw. gelesen wurde ich eine kurze Meldung pushmsg/mytts oder ähnliches ausgeben könnte.
Es reicht also wenn Callsign und Last Heard in einem Reading steht wenn ich das so richtig sehe. Das via Source muss nicht sein.

Ich hoffe meine Erklärungsversuche sind verständlich.Bin da auch noch nicht lange in dem Thema Fhem drin gib mir aber mühe das zu verstehen. In meinem Alter fällt einem das aber nicht mehr so leicht :-)

Ach so, das von mir erstellte Regular Expression filter nur deutsche Rufzeichen die am Anfang mit "D" beginnen heraus.
<a href="https://www.qrz.com/db/D\w+" class="pl" target="_blank">(D\w+)</a></td>

JoWiemann

Ok, da wirst Du wohl ohne zusätzlichen Code in einer 99_myUtils, oder besser noch ein eigenes Modul, nicht zum Ergebnis kommen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

t_schlueter

Zitat von: JoWiemann am 18 März 2017, 17:11:39
Ok, da wirst Du wohl ohne zusätzlichen Code in einer 99_myUtils, oder besser noch ein eigenes Modul, nicht zum Ergebnis kommen.

Grüße Jörg
OK, und nur Ausgabe von Callsign und Last Heard?
Also nur zur Darstellung in Tabletui.

Die derzeitige Einbindung via IFrame sieht einfach blöd aus :-(

JoWiemann

Hm, mit TabletUi kenne ich mich nicht aus. Aber da die zu scannende Seite nicht statisch ist, wirst Du immer alle Zeilen abscannen müssen und dann so aufbereiten müssen, dass sie in TabletUi vernünftig dargestellt werden. Dabei ist es dann egal, wie viele Spalten aufbereitet werden.

Was ganz gut ist, dass es sich um eine klassische html-Tabelle handelt.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

viegener

Mit RegOpt lässt sich das mit HTTPMod durchaus realisieren. Daraus dann eine Tabelle aller D.* Einträge in TabletUI zu machen ist allerdings auch etwas Aufwand. Leg Dir doch mal einen passenden httpmod device zu dem URL an mit folgenden Attributen:


Attributes:
   enableControlSet 1
   reading1MaxAge 1
   reading1MaxAgeReplacementMode delete
   reading1Name testA
   reading1RegOpt sg
   reading1Regex href="https:\/\/www.qrz.com\/db\/(D[^"]+)"
   reading2MaxAge 1
   reading2MaxAgeReplacementMode delete
   reading2Name testB
   reading2RegOpt sg
   reading2Regex href="https:\/\/www.qrz.com\/db\/D[^"]+"[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<td width="240">([^<]*)<
   timeout    300


Damit lassen sich erstmal die zwei Spalten herausziehen das Datum geht analog, allerdings hatte ich keine Lust öffnende <'s zu zählen. Problem, das ganze geht davon aus, dass Struktur der Tabelle ziemlich exakt gleich bleibt.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

JoWiemann

Schön wäre es, wenn httpmod htmltableextract unterstützen würde.


Grüße Jörg

Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

t_schlueter

#12
Zitat von: viegener am 19 März 2017, 00:35:49
Mit RegOpt lässt sich das mit HTTPMod durchaus realisieren. Daraus dann eine Tabelle aller D.* Einträge in TabletUI zu machen ist allerdings auch etwas Aufwand. Leg Dir doch mal einen passenden httpmod device zu dem URL an mit folgenden Attributen:


Attributes:
   enableControlSet 1
   reading1MaxAge 1
   reading1MaxAgeReplacementMode delete
   reading1Name testA
   reading1RegOpt sg
   reading1Regex href="https:\/\/www.qrz.com\/db\/(D[^"]+)"
   reading2MaxAge 1
   reading2MaxAgeReplacementMode delete
   reading2Name testB
   reading2RegOpt sg
   reading2Regex href="https:\/\/www.qrz.com\/db\/D[^"]+"[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<td width="240">([^<]*)<
   timeout    300


Damit lassen sich erstmal die zwei Spalten herausziehen das Datum geht analog, allerdings hatte ich keine Lust öffnende <'s zu zählen. Problem, das ganze geht davon aus, dass Struktur der Tabelle ziemlich exakt gleich bleibt.
Das sieht schon gut aus :-)
defmod XRF787 HTTPMOD http://xrf787.de/index.php 60
attr XRF787 userattr reading1MaxAge reading1MaxAgeReplacementMode reading1MaxAgeReplacementMode:text,reading,internal,expression,delete reading1Name reading1RegOpt reading1Regex reading2MaxAge reading2MaxAgeReplacementMode reading2MaxAgeReplacementMode:text,reading,internal,expression,delete reading2Name reading2RegOpt reading2Regex
attr XRF787 enableControlSet 1
attr XRF787 reading1MaxAge 1
attr XRF787 reading1MaxAgeReplacementMode delete
attr XRF787 reading1Name testA
attr XRF787 reading1RegOpt sg
attr XRF787 reading1Regex href="https:\/\/www.qrz.com\/db\/(D[^"]+)"
attr XRF787 reading2MaxAge 1
attr XRF787 reading2MaxAgeReplacementMode delete
attr XRF787 reading2Name testB
attr XRF787 reading2RegOpt sg
attr XRF787 reading2Regex href="https:\/\/www.qrz.com\/db\/D[^"]+"[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<[^<]+<td width="240">([^<]*)<
attr XRF787 timeout 300

setstate XRF787 2017-03-19 10:40:59 testA-1 DL6CL
setstate XRF787 2017-03-19 10:40:59 testA-10 DL2CK
setstate XRF787 2017-03-19 10:40:59 testA-11 DO2LUM
setstate XRF787 2017-03-19 10:40:59 testA-12 DB9HE
setstate XRF787 2017-03-19 10:40:59 testA-13 DC4RIS
setstate XRF787 2017-03-19 10:40:59 testA-14 DG4IX
setstate XRF787 2017-03-19 10:40:59 testA-15 DL6PM
setstate XRF787 2017-03-19 10:40:59 testA-16 DL4TTB
setstate XRF787 2017-03-19 10:40:59 testA-17 DL4DSA
setstate XRF787 2017-03-19 10:40:59 testA-18 DL6YBK
setstate XRF787 2017-03-19 10:40:59 testA-19 DO4DHH
setstate XRF787 2017-03-19 10:40:59 testA-2 DL4BAM
setstate XRF787 2017-03-19 10:40:59 testA-20 DO1OUH
setstate XRF787 2017-03-19 10:40:59 testA-21 DG4LAX
setstate XRF787 2017-03-19 10:40:59 testA-22 DO4MLG
setstate XRF787 2017-03-19 10:40:59 testA-23 DL3YEB
setstate XRF787 2017-03-19 10:40:59 testA-24 DL8JE
setstate XRF787 2017-03-19 10:40:59 testA-25 DH7OM
setstate XRF787 2017-03-19 10:40:59 testA-26 DL6HAT
setstate XRF787 2017-03-19 10:40:59 testA-27 DB8XP
setstate XRF787 2017-03-19 10:40:59 testA-28 DD2HS
setstate XRF787 2017-03-19 10:40:59 testA-29 DG4JC
setstate XRF787 2017-03-19 10:40:59 testA-3 DL2HBJ
setstate XRF787 2017-03-19 10:40:59 testA-30 DB5LC
setstate XRF787 2017-03-19 10:40:59 testA-31 DO1YKH
setstate XRF787 2017-03-19 10:40:59 testA-32 DG0CCO
setstate XRF787 2017-03-19 10:40:59 testA-33 DO6NI
setstate XRF787 2017-03-19 10:40:59 testA-34 DL5QY
setstate XRF787 2017-03-19 10:40:59 testA-35 DK4LP
setstate XRF787 2017-03-19 10:40:59 testA-36 DG6OAY
setstate XRF787 2017-03-19 10:40:59 testA-37 DB1WA
setstate XRF787 2017-03-19 10:40:59 testA-38 DK3PG
setstate XRF787 2017-03-19 10:40:59 testA-39 DL9RDD
setstate XRF787 2017-03-19 10:40:59 testA-4 DK8AW
setstate XRF787 2017-03-19 10:40:59 testA-40 DF9GK
setstate XRF787 2017-03-19 10:40:59 testA-41 DL4LBM
setstate XRF787 2017-03-19 10:40:59 testA-42 DO3STD
setstate XRF787 2017-03-19 10:40:59 testA-43 DF1LK
setstate XRF787 2017-03-19 10:40:59 testA-44 DH8LU
setstate XRF787 2017-03-19 10:40:59 testA-45 DL1LP
setstate XRF787 2017-03-19 10:40:59 testA-46 DS1AWE
setstate XRF787 2017-03-19 10:40:59 testA-47 DB7OZ
setstate XRF787 2017-03-19 10:40:59 testA-5 DO2BM
setstate XRF787 2017-03-19 10:40:59 testA-6 DL6EAT
setstate XRF787 2017-03-19 10:40:59 testA-7 DL4AH
setstate XRF787 2017-03-19 10:40:59 testA-8 DL8RP
setstate XRF787 2017-03-19 10:40:59 testA-9 DD3SK
setstate XRF787 2017-03-19 10:40:59 testB-1 DL6CL   B
setstate XRF787 2017-03-19 10:40:59 testB-10 DM0BAM  C
setstate XRF787 2017-03-19 10:40:59 testB-11 DO2LUM  B
setstate XRF787 2017-03-19 10:40:59 testB-12 DB0MAR  B
setstate XRF787 2017-03-19 10:40:59 testB-13 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-14 DL6EAT  G
setstate XRF787 2017-03-19 10:40:59 testB-15 DL6EAT  G
setstate XRF787 2017-03-19 10:40:59 testB-16 XRF016  G / XLX022
setstate XRF787 2017-03-19 10:40:59 testB-17 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-18 DB0HCC  B
setstate XRF787 2017-03-19 10:40:59 testB-19 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-2 DL4BAM  B
setstate XRF787 2017-03-19 10:40:59 testB-20 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-21 DG4LAX  B
setstate XRF787 2017-03-19 10:40:59 testB-22 DL6EAT  G
setstate XRF787 2017-03-19 10:40:59 testB-23 DL6EAT  G
setstate XRF787 2017-03-19 10:40:59 testB-24 DL8JE   B
setstate XRF787 2017-03-19 10:40:59 testB-25 DO0DEL  B
setstate XRF787 2017-03-19 10:40:59 testB-26 DB0MAR  B
setstate XRF787 2017-03-19 10:40:59 testB-27 DB8XP   B
setstate XRF787 2017-03-19 10:40:59 testB-28 DB0MAR  B
setstate XRF787 2017-03-19 10:40:59 testB-29 DB0IZ   C
setstate XRF787 2017-03-19 10:40:59 testB-3 DB0DWL  B
setstate XRF787 2017-03-19 10:40:59 testB-30 DB0DWL  B
setstate XRF787 2017-03-19 10:40:59 testB-31 DO1YKH  C
setstate XRF787 2017-03-19 10:40:59 testB-32 XRF767  C
setstate XRF787 2017-03-19 10:40:59 testB-33 XRF767  C
setstate XRF787 2017-03-19 10:40:59 testB-34 DM0RAM  B / XLX747
setstate XRF787 2017-03-19 10:40:59 testB-35 DM0HEI  B
setstate XRF787 2017-03-19 10:40:59 testB-36 DG6OAY  B
setstate XRF787 2017-03-19 10:40:59 testB-37 DM0RAM  B / XLX747
setstate XRF787 2017-03-19 10:40:59 testB-38 OE5XDN  B / XLX022
setstate XRF787 2017-03-19 10:40:59 testB-39 OE5XDN  B / XLX022
setstate XRF787 2017-03-19 10:40:59 testB-4 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-40 DB0DMB  B
setstate XRF787 2017-03-19 10:40:59 testB-41 DB0DMB  C
setstate XRF787 2017-03-19 10:40:59 testB-42 DB0EAT  C
setstate XRF787 2017-03-19 10:40:59 testB-43 DF1LK   B / XLX022
setstate XRF787 2017-03-19 10:40:59 testB-44 DB0MAR  B
setstate XRF787 2017-03-19 10:40:59 testB-45 DB0MAR  B
setstate XRF787 2017-03-19 10:40:59 testB-46 DL6EAT  G
setstate XRF787 2017-03-19 10:40:59 testB-47 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-5 DM0HEI  C
setstate XRF787 2017-03-19 10:40:59 testB-6 DL6EAT  D
setstate XRF787 2017-03-19 10:40:59 testB-7 DB0SHA  B
setstate XRF787 2017-03-19 10:40:59 testB-8 XRF747  G / XLX747
setstate XRF787 2017-03-19 10:40:59 testB-9 OE5XDN  B / XLX022



Ihr seit gut!

Mal sehen ob ich das mit dem Datum selber hin bekomme.