Nur bestimmten Teil eines Files/Website lesen?
Sebastian Brixner
- php
Ich füge erstmal meinen Source ein:
<?php
$url = "http://listings.ebay.de/aw/plistings/newtoday/fixed/category9790/index.html";
$fp = fopen($url, "r");
while ($buffer = fgets($fp, 1000)) {
$ft = fopen("test.txt", "a+");
fputs($ft, "$buffer");
fclose($ft); }
fclose($fp);
?>
Ich will nun aus dem File "test.txt" nur einen kleinen teil darstellen. Am besten währe es wenn ich das Stichwort angeben könnte, denn die Zeilennummer bringt in dem Fall nichts, da sich das File ständig ändert!
Im Klartext geht es darum:
Ich will aus der besagten Ebay-Seite den String "Aktualisiert: xx.xx.xx" lesen und dann auf die Site schreiben.
Die komplette site wird dann noch per refresh im Metatag alle 2 sek. aktualisiert.
Somit sollte mir immer die Zeit angezeigt werden, wann Ebay zuletzt aktualisiert wurde, in der Verzögerung von 2 Sek.
Bin ich da auf dem richtigen Wege oder muss ich das ganz anders angehen?
Grüße
Sebastian
Hi,
Ich will nun aus dem File "test.txt" nur einen
kleinen teil darstellen. Am besten wäre es wenn
ich das Stichwort angeben könnte,
und wer soll mit dieser Information etwas anfangen
können?
Auf dem eBay-Server gibt es vermutlich kein für Deine
Bedürfnisse optimiertes Skript, welches Dir einen Teil
seiner Seiten maschinenlesbar ausliefert. eBay wäre
ja auch blöd, wenn sie Dir erlauben würden, auf ihre
Informationen zugreifen zu können, ohne daß Du gleich-
zeitig die ggf. in ihren Seiten eingeblendete Werbung
lesen mußt.
Und außerdem würdest Du Dir auf diese Art und Weise
fremde Inhalte, dynamisch abgesaugt, "zunutze machen"
und damit vermutlich gegen das Copyright von eBay ver-
stoßen (falls Du das Ergebnis publizieren würdest).
Ich will aus der besagten Ebay-Seite den String
"Aktualisiert: xx.xx.xx" lesen und dann auf die
Site schreiben.
Tja, da wird Dir nichts anderes übrig bleiben, als die
komplette Seite abzusaugen und zu parsen.
(Und Dein Programm anzupassen, wenn eBay den Aufbau
seiner Seite ändert ... jedesmal, natürlich.)
Die komplette site wird dann noch per refresh im
Metatag alle 2 sek. aktualisiert.
Eieiei ... und wann glaubst Du, das zu schaffen?
Vielleicht ist Dein Webspace tatsächlich schnell genug
angebunden, um diese Seite in weniger als zwei Sekunden
abzusaugen und zu parsen - aber wäre ich Dein Provider,
dann würde ich Dich rauswerfen wegen dem Traffic, den
eine solche "Lösung" verursachen muß.
Bin ich da auf dem richtigen Wege oder muss ich das
ganz anders angehen?
Ich würde eher vorschlagen, die Sache komplett zu ver-
gessen. Dir drohen sowohl Ärger von eBay (die in ihren
Logs Deine IP-Adresse als Traffic-Verursacher finden
und diese ggf. auf eine schwarze Liste setzen können)
als auch unfreundliche Kommentare von Deinem Provider.
HTTP ist für "realtime-autofresh"-Effekte denkbar un-
geeignet.
Viele Grüße
<img src="http://www.schroepl.net/projekte/gzip_cnc/gzip_cnc.gif" border=0 alt=""> Michael
Hallo Stefan,
da liegen zwei Denkfehler:
1: Die Seiten von eBay sind dynamisch erzeugt und werden daher wohl immer einen aktuellen Timestamp tragen, wenn Du sie aufrufst. Man kann zwar auch Seiten in einen temporär statischen Cache vorberechnen lassen, damit sie nicht für jeden Teilnehmer neu berechnet werden müssen, aber das glaube ich nicht, dass die das so machen.
2: Selbstvertändlich kann es passieren, dass man nur die Kopfdaten der Page belommt und nicht die ganze Page. Das ist immer der Fall, wenn das Datum das der Browser hat nicht älter ist, als das das der Server hat. Man erhält dann Fehler 304 (http) = not mofified. Dein Browser zeigt trotzdem was an, nämlich die Site aus dem Cache.
Du müsstest Dich also erst einmal mit http auseinandersetzen. Dir alles über das Protokoll beschaffen. Dann ist das, was Du vorhast bestimmt machbar. Und aller zwei Sekunden würde ich auch nicht anfragen, sondern bestenfalls aller 15sec.
Solltet Du auf der Suche nach den Tiefen des http-Protokolls Erfolg haben, dann informier mich bitte. Interessiert mich auch.
Liebe Grüße
Tom
Hallo Stefan,
Du müsstest Dich also erst einmal mit http auseinandersetzen. Dir alles über das Protokoll beschaffen. Dann ist das, was Du vorhast bestimmt machbar. Und aller zwei Sekunden würde ich auch nicht anfragen, sondern bestenfalls aller 15sec.
Da fand ich doch ganz zufällig etwas weiter unten den begehrten Hinweis:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
Das müsste, wenn man noch so drei bis vier Wochen (oder Jahre?) übt, zum Ziel führen.
Viel Erfolg