Seite 1 von 1

String aus HTML Datei auslesen und auswerten

Verfasst: 02.06.2008 19:06
von P1TBULL
Moin!

Ich hab ein Problem. Ich würde gerne eine HTML Datei auslesen und bestimmte Zeilen dieser HTML Datei auswerten. Es handelt sich dabei um die Newsseite des Online-Bundesliga Managers "Comunio" :D
Da man bei diesem Spiel das Guthaben der anderen Mitspieler nicht sehen kann muss man sich die Transfers mühsam per Hand mitschreiben um die finanziellen Mittel der Mitspieler im Auge zubehalten. Darauf hab ich aber keine Lust, deswegen würde ich gerne ein kleines Prog schreiben das diese Aufgabe für mich vollautomatisch übernimmt.
Hier ein kleines Beispiel:

alt="Vom Computer" />&nbsp;<i>28.05.08 07:01</i> Computer > <a href="tradableInfo.phtml?tid=46" target="_blank" style="font-weight:normal;" onclick="return(openSmallWindow('tradableInfo.phtml?tid=46','8f14'))">Weidenfeller</a> wechselt f&uuml;r 1.200.000 von Borussen LEO zu Henrik Larsson.<

Mit alt="Vom Computer" wird immer eine News des Computers eingeleitet. Danach kommt viel uninteressantes und dann der Transfer. Welcher Spieler für wieviel Geld von wem zu wem wechselt.

Leider habe ich keine Idee wie ich dieses Problem angehen soll. Vlt. findet sich hier ja jemand der mir helfen kann oder andere Comunio Fans denen dieses kleine Prog die lästige Mitschreibarbeit erspart :wink:

MFG

Verfasst: 02.06.2008 19:35
von STARGÅTE
hier eine Procedure die ich selber gerne Nutze:

Code: Alles auswählen

Procedure.s MyStringField(String$, Index, Separator$, Start$="", Ende$="")
 If Start$
  Start = FindString(String$, Start$, 1)
 Else
  Start = 1
 EndIf
 If Ende$
  Ende = FindString(String$, Ende$, 1)
 Else
  Ende = Len(String$)
 EndIf
 If Start
  String$ = Mid(String$, Start+Len(Start$), Ende-Start-Len(Start$))
  ProcedureReturn StringField(String$, Index, Separator$)
 EndIf
EndProcedure
Vllt Hilft dir die. Damit kannst StringFields auslesen wobi Anfang und Ende verändert werden könnten.
MyStringField(String$, 2, chr(34), "alt=")
ergibt dann
Vom Computer

Verfasst: 02.06.2008 22:07
von P1TBULL
Hi, danke schonmal, dein Beitrag hat mir schon sehr geholfen. Aber ich hab jetzt trotzdem noch ein Problem. Ich habe es jetzt soweit hinbekommen das der erste Transfer anständig ausgelesen wird. Aber die Transfers die danach folgen werden nicht ausgelesen. Ich hab mal meine bisherigen Code gepostet. Danke schonmal im Vorraus!!!

Code: Alles auswählen

OpenFile(0,"C:\comunio.html")
         ReadFile(0,"C:\comunio.html")
          
         While Eof(0) = 0       ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
         text.s = text + Readstring(0)
         Wend
         
         ;Findet das erste Datum 
         Debug MyStringField(text ,1, "</i>", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>") 
         ;Findet den Betrag des Deals
         Debug MyStringField(text ,12, " ", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>")
         ;Findet den Verkäufer
         Debug MyStringField(text ,14, " ", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>")
         ;Findet den Käufer
         Debug MyStringField(text ,16, " ", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>")
         ;Debug MyStringField(text ,17, " ", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>")
         Debug RemoveString (MyStringField(text ,17, " ", "alt="+Chr(34)+"Vom Computer"+Chr(34)+" />&nbsp;<i>"), ".<div")

Verfasst: 02.06.2008 22:33
von STARGÅTE
bin zu faul mir das "Datenmüll" rein zu ziehen, aber meinst du damit das es nur ein mal eine gewollten SuchString findet und deren Wert ausgibt ? UNd du willst das er sie alle findet ?

Verfasst: 02.06.2008 22:43
von P1TBULL
Genau :mrgreen:

Verfasst: 02.06.2008 22:53
von STARGÅTE
das "ins Auge springenste" wäre :
Du teilst das String erst in Felder mit der Begrenzung deines Suchwortes und suchst dann nur noch nach dem "

hier einbeispiel, vereinfachterweise mit ' statt "

dafür brauchst du dann n Andere StringField, das auch TrennStrings nimmt und nicht nur wie das PB-StringField Zeichen:

Code: Alles auswählen

; Gibt einen Stringabschnitt (getrennt durch 'TrennString') an der stelle 'Index' zurück 
Procedure.s StringField2(String$, Index, TrennString$)
 Stelle = 1-Len(TrennString$)
 For n = 1 To Index
  x = Stelle+Len(TrennString$)
  Stelle = FindString(String$+TrennString$, TrennString$, x)
  If Stelle = 0 : n = Index : EndIf
 Next n
 If Stelle
  NewString$ = Mid(String$, x, Stelle-x)
 EndIf
 ProcedureReturn NewString$
EndProcedure

String$ = " laber laber alt= '123' bla bla alt='456'  ebay123 "
i = 2
Repeat
 SubString$ = StringField2(String$, i, "alt=") 
 If SubString$
  Wert$ = StringField2(SubString$, 2, "'")
  Debug Wert$
 EndIf
 i + 1
Until Not SubString$

Verfasst: 03.06.2008 16:13
von P1TBULL
Super vielen Dank für deine Hilfe! Habs jetzt soweit hinbekommen. War zwar ne Menge "Fuddelarbeit" aber die benötigten Werte werden ausgelesen!!! Juhuuuu :D