Sebastian Brixner: Nur bestimmten Teil eines Files/Website lesen?

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

  1. 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

    1. 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

      1. 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