Entwickler-Ecke

Internet / Netzwerk - Problem beim Zugriff auf Frames


Bo0n - Mo 13.02.12 22:56

Moderiert von user profile iconNarses: Abgestrennt von [url=http://www.delphi-forum.de/viewtopic.php?t=108054&start=40&postorder=asc]hier[/url].

Hallo

ich habe ein problem in diese richtung :D

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 :D

Moderiert von user profile iconNarses: Bilder als Anhang hochgeladen.


jaenicke - Mo 13.02.12 23:15

Hallo und :welcome:

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 - Mo 13.02.12 23:31

Das Programm soll einen Stundenplan aktualisieren
-> http://dgserver10.de/bbswissen/fileadmin/user_upload/user_upload/schuelerinternet/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 user profile iconMartok: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.


jaenicke - Mo 13.02.12 23:59

user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
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 - 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 - 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 - 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:
http://www.grupet.at/de/produkte/untis/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


Bo0n - Mi 15.02.12 19:09

Nein Leider habe ich kein Zugriff darauf.

Alles was ich habe ist dieser Link
-> http://dgserver10.de/bbswissen/fileadmin/user_upload/user_upload/schuelerinternet/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 - 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 user profile iconNarses: Bild als Anhang hochgeladen.


Xion - Do 16.02.12 11:54

Schreibe doch einfach

Delphi-Quelltext
1:
start := pos('>',stringliste.Strings[index])+1;                    


Bo0n - 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 user profile iconNarses: Bild als Anhang hochgeladen.


Narses - Do 16.02.12 13:44

Moin!

user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
hat einer einen Tipp wie ich die Räume finde?
Reguläre Ausdrücke? Hier ist ein Beispiel [http://www.delphi-library.de/topic_Internet+IP+ueber+Internetseite+herausfinden_74581.html], wie das geht. :les: :think:

cu
Narses


Bo0n - Do 16.02.12 14:04

das geht doch mit Sicherheit einfacher oder ? :D
wenn ich ehrlich bin versteh ich den Quellcode nicht.. bin halt noch ein Anfänger


Narses - Do 16.02.12 14:35

Moin!

user profile iconBo0n hat folgendes geschrieben Zum zitierten Posting springen:
das geht doch mit Sicherheit einfacher oder ?
Ja, klar, aber Pos() und Copy() kennst du ja nun schon. :nixweiss:

cu
Narses


Xion - 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)


Bo0n - Fr 17.02.12 07:52

hat sich erledigt danke für die hilfe :)