Autor |
Beitrag |
Bo0n
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 13.02.12 22:56
Moderiert von Narses: Abgestrennt von [url=www.delphi-forum.de/...rder=asc]hier[/url].
Hallo
ich habe ein problem in diese richtung
bis jetzt hat alles gut funktioniert bis ich auf den folgenden fehler beim auslesen der seite traff -> *klick1* (jpg, 123.81 KB)
daraufhin habe ich mir die frames angeguckt und bin darauf gekommen
*klick2* (jpg, 84.26 KB)
*klick3* (jpg, 211.66 KB)
und jetzt komme ich zu der eigentlichen frage: ist es machbar auf diese frames zu zugreifen?
ich könnte natürlich die URL des 3. Bildes benutzen, allerdings habe ich die befürchtung, dass sich dieser spätestens jede woche ändert
würde mich über hilfe freuen
Moderiert von Narses: Bilder als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 13.02.12 23:15
Hallo und
So wirklich verstehe ich dein Problem nicht. Was machst du wie und wo bekommst du diesen "Fehler"?
Wenn du Indy benutzt, lädst du doch ohnehin nur den Seitenquelltext. Und da musst du logischerweise die einzelnen Seiten dann auch manuell laden, da keinerlei visuelle Logik darin vorhanden ist. Und erst für die Anzeige oder eine Analyse benötigt man ja die Quelltexte der einzelnen Frames. Deren Adressen bekommst du ja im Quelltext der Hauptseite geliefert.
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mo 13.02.12 23:31
Das Programm soll einen Stundenplan aktualisieren
-> dgserver10.de/bbswis...internet/default.htm
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button1Click(Sender: TObject); begin try Memo1.Text := idHttp1.Get('http://dgserver10.de/bbswissen/fileadmin/user_upload/user_upload/schuelerinternet/c/07/c00082.htm'); except ShowMessage('Es ist ein Fehler aufgetreten!'); end; end; |
^ Sollte ja normalerweise den Quelltext liefern, dabei tritt genauso nur unübersichtlicher das problem in lazarus auf
-> *klick* (jpg, 123.81 KB)
Also kriege ich den eigentlichen Quelltext nicht zu sehen.. wenn ich allerdings den Quelltext des aktuellen Frames ansehe ist es genau das was ich brauche und da die URL des aktuellen Frames sich ändert brauche ich einen Weg diese URL auslesen zu können um dann den Quelltext zu erhalten den ich eigentlich brauche
Ich bin nicht der Beste im erklären und finde meist auch nicht die Worte dazu, wäre es vll möglich, dass ich mich per Skype etc. melden kann?
Moderiert von Martok: Delphi-Tags hinzugefügt
Moderiert von Narses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 13.02.12 23:59
Bo0n hat folgendes geschrieben : | Also kriege ich den eigentlichen Quelltext nicht zu sehen.. |
Das ist der eigentliche Quelltext der Seite. Darin musst du nach dem Link zu dem Frame suchen, auf den du zugreifen möchtest. Eine andere Möglichkeit gibt es nicht.
Im Zweifelsfall reichen schon normale Stringoperationen wie Pos, Copy, Delete, ... oder du parst den Quelltext richtig.
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Di 14.02.12 19:39
Ich habe mir die Links angesehen aber ich komme nicht auf den Frame den ich brauche, was natürlich auch daran liegen könnte, dass ich sehr wenig Ahnung und keine Erfahrung damit habe
Wie soll ich denn überhaupt vorgehen um den Frame zu finden?
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 15.02.12 12:04
^hat sich geklärt
Andere Frage..
Ich möchte in ein Textfeld einen Klassennamen eingeben und nach diese die Frames danach durchsuchen um den Stundenplan auszufüllen, damit auch neue Klassen gefunden werden können.
Ist es machbar? und wenn ja würde diese vorgehensweise das Programm verlangsammen?
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 15.02.12 12:31
Hast du denn keine Möglichkeit, auf anständige Rohdaten zuzugreifen (eine Datenbankschnittstelle wäre ein Traum). Weil irgendwo gibt es (hoffentlich) Daten in einem Format, dass man sie auslesen kann.
Die Werbung verspricht, dass es sowas gibt:
www.grupet.at/de/pro...ntis/stundenplan.php
PS: wenn du nicht direkt eine Datenbankschnittstelle hast, dann wäre es ja immernoch evtl. möglich, statt den blöden Tabellen ein CSV-Format zu exportieren und dir dann auf der Website zu präsentieren
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Mi 15.02.12 19:09
Nein Leider habe ich kein Zugriff darauf.
Alles was ich habe ist dieser Link
-> dgserver10.de/bbswis...rnet/c/07/c00081.htm
wobei der letzte Teil (c00081.htm) für je eine Klasse steht (von c00001 - c00089)
und alles was ich kriege ist der Quelltext dieses Plans in welchem eigentlich alles steht
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 16.02.12 11:46
Sofern habe ich die Stunden, Lehrer und das Fach in einer gewissen Art und Weise rausgefiltert
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button2Click(Sender: TObject); var stringliste : Tstringlist; index, start,ende : integer; begin stringliste := TStringList.Create; stringliste.Text:= Memo1.Text; for index := 0 to stringliste.Count - 1 do begin if pos('>', stringliste.strings[index]) >0 then begin start := pos('>',stringliste.Strings[index]); ende := Pos('</',Copy(stringliste.Strings[index],start,length(stringliste.Strings[index]))); Memo2.Lines.Add(copy(stringliste.Strings[index],start,ende)); end; end; end; |
dabei kommt soetwas raus (siehe Anhang)
leider weiß ich nicht wie ich die >< Zeichen wegkriege und die Klassenräume suche
gibt es einen platzhalter welcher mir erlaubt bei
start := pos('>',stringliste.Strings[index]); statt '>' nichts zu schreiben?
leeres Feld ist leider keine Lösung da ich statt z.B. >WOB< ein <B>WOB< bekomme
würde mich über jede Hilfe freuen
Moderiert von Narses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 16.02.12 11:54
Schreibe doch einfach
Delphi-Quelltext 1:
| start := pos('>',stringliste.Strings[index])+1; |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 16.02.12 12:03
Oh mein Gott ich seh vor lauter Bäume schon den Wald nicht mehr
danke dir ich würde bestimmt noch stundenlang da sitzen und nicht verstehen warum das nicht geht..
hat einer einen Tipp wie ich die Räume finde? (siehe Anhang)
Moderiert von Narses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 16.02.12 13:44
Moin!
Bo0n hat folgendes geschrieben : | hat einer einen Tipp wie ich die Räume finde? |
Reguläre Ausdrücke? Hier ist ein Beispiel, wie das geht.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Do 16.02.12 14:04
das geht doch mit Sicherheit einfacher oder ?
wenn ich ehrlich bin versteh ich den Quellcode nicht.. bin halt noch ein Anfänger
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 16.02.12 14:35
Moin!
Bo0n hat folgendes geschrieben : | das geht doch mit Sicherheit einfacher oder ? |
Ja, klar, aber Pos() und Copy() kennst du ja nun schon.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 16.02.12 16:20
Ist das nicht einfach immer der x-te Wert in deiner StringListe?
Ansonsten musst du versuchen anhand der Schriftgröße/-typ rauszukriegen, welcher Teil nun der Raum ist (mit Copy/Pos)
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Bo0n 
Hält's aus hier
Beiträge: 10
|
Verfasst: Fr 17.02.12 07:52
hat sich erledigt danke für die hilfe 
|
|