Ankündigung

Einklappen
Keine Ankündigung bisher.

Quelltext auslesen mit file_get_contents

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ralph777
    hat ein Thema erstellt Quelltext auslesen mit file_get_contents.

    Quelltext auslesen mit file_get_contents

    Hey, ich habe folgendes Problem:

    ich möchte den Inhalt einer Tabelle über den Quelltext auslesen ( mit file_get_contents() ). Dabei zeigt die tabelle aber immer nur 10 Zeilen an. wenn man auf weiter klickt, kommen die nächsten 10. Der Pfad verendert sich ca. so :

    "http://www.example.com/...&row=0" zu "http://www.example.com/...&row=10"

    Wenn ich den Pfad mit row=0 angebe, klappt das auslesen wunderbar. Gebe ich jedoch den Pfad mit row=10 an, bekomme ich das gleiche resultut wie bei row=0, obwohl die Tabelle ja eigentlich die nächsten 10 Zeilen darstellen müsste.

    Kann das irgendwie daran liegen, dass die Variable "row" nicht richtig übergeben wird oder so ?

    So versuch ich das auszulesen:

    PHP-Code:
    $temp "http://www.example.com/...&row=10";
        
    $text file_get_contents($temp,'r'); 
    Vielen Dank schonmal

  • Ralph777
    antwortet
    curl_error gibt nichts zurück... curl_exec gibt ja auch was zurück, nur halt immer die ersten 10 Zeilen

    Einen Kommentar schreiben:


  • fab
    antwortet
    Du erreichst wenn überhaupt das Gegenteil, nämlich einen LOCK auf die Datei, dass von curl nicht mehr darauf geschrieben werden kann. Was sagt [man]curl_error[/man] ?

    Einen Kommentar schreiben:


  • Ralph777
    antwortet
    Was soll das ...?
    Hab das irgendwo im i-net gefunden, hab auch nicht ganz gedacht, dass das notwendig ist, aber schaden tut es ja nicht. Bzw. ohne fopen klappt es auch net.

    Wollte irgendwie sicher gehen, dass in cookie.txt geschrieben werden kann

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von Ralph777 Beitrag anzeigen
    PHP-Code:
    fopen("cookie.txt","w"); 
    Was soll das ...?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    In der cookie.txt steht auch danach irgenwie nix,
    Wie sollte es auch? Es wird ja kein Cookie benutzt, sondern Du schickst nur nen Inhalt mit.
    glaube das es daran liegt...
    Dann frage ich mich allerdings, wo es Parameter wie &startrow=10 geben sollte. Ausgeschlossen ist nichts, aber wenn ich mir so Dein Verständnis von der Materie ansehe, tippe ich erstmal auf einen Fehler von Deiner Seite.

    [edit]
    Oh, ok. CURLOPT_COOKIEJAR war mir neu..

    Einen Kommentar schreiben:


  • Ralph777
    antwortet
    Also ich habs jetzt mal so gebastelt, klappt aber auch nicht richtig. Ich bekomme immernoch nur die ersten 10 Zeilen

    PHP-Code:
    fopen("cookie.txt","w");

     
    $ch1 curl_init();

    curl_setopt($ch1CURLOPT_URL"http://www.example.com...startrow=10");

    curl_setopt($ch1CURLOPT_RETURNTRANSFER1);
    curl_setopt(CURLOPT_COOKIEJAR'cookie.txt'); 
     
    $text curl_exec($ch1);

    curl_close($ch1);



    $ch curl_init();
     
    curl_setopt($chCURLOPT_URL"http://www.example.com...&startrow=10");
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_COOKIEFILE'cookie.txt');
     
    $text2 curl_exec($ch);
    curl_close($ch); 
    Jemand ne idee ? In der cookie.txt steht auch danach irgenwie nix, glaube das es daran liegt...

    Einen Kommentar schreiben:


  • Ralph777
    antwortet
    Hey, cURL funktioniert jetzt bei mir... Hab das installiert.

    kann mir jetzt jemand nochmal genau (am besten gescriptet) zeigen, wie ich die einzelnen genannten Teile (Cookie entgegennehmen etc.) zusammensetze ?

    Das wäre sehr nett !!

    Einen Kommentar schreiben:


  • Frank
    antwortet
    Zitat von Ralph777 Beitrag anzeigen
    Kann es sein, dass ich das nicht nutzen kann ?
    Du musst schon selber wissen, ob du curl installiert hast.

    Einen Kommentar schreiben:


  • Ralph777
    antwortet
    Habe jetzt erstmal getestet, ob ich mit cURL arbeiten kann. habe dafür einfach das "Beispiel #1 Abrufen einer Webseite" aus dem Manual benutzt, dabei hat sich die Seiter zerschoßen.

    Kann es sein, dass ich das nicht nutzen kann ? Wie kann ich das testen ? Hört sich nämlich für mein Problem interessant an

    Einen Kommentar schreiben:


  • fab
    antwortet
    Richtig, das ist aber gar nicht so einfach, der Cookie muss ja erstmal entgegengenommen und gespeichert werden.

    Ich habe da noch etwas für curl gefunden:

    PHP: curl_setopt - Manual

    CURLOPT_COOKIEFILE Der Name einer Datei, die Cookiedaten enthält. Diese Datei kann im Netscape-Format sein oder HTTP-geformte Header enthalten.
    CURLOPT_COOKIEJAR Der Name einer Datei in der alle internen Cookies beim Schließen der Verbindung gespeichert werden.
    D.h. du speicherst den Cookie* beim ersten Aufruf mittels
    PHP-Code:
    curl_setopt(CURLOPT_COOKIEJAR'cookies.txt'); 
    und gibst ihn* bei den folgenden Aufrufen wieder mit:
    PHP-Code:
    curl_setopt(CURLOPT_COOKIEFILE'cookies.txt'); 
    Dann brauchst du den einzelnen JSESSIONID Cookie gar nicht beachten und auch nicht mit dem stream context hantieren, Voraussetzung ist nur dass du curl verwendest statt file_get_contents. Wie das geht steht z.B. hier: PHP: curl_exec - Manual

    *) genauer gesagt: alle gesendeten Cookies

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    im Grunde muss dein Script sich doch nur Verhalten wie ein "normaler" Browser ... also die Seite aufrufen , Cookie entgegennehmen , speichern . und dann als Kontext wieder mitliefern ... wenn ich die Aussage von fab richtig verstanden hab

    Einen Kommentar schreiben:


  • Ralph777
    antwortet
    Ich glaube das übersteigt alles mein Wissen

    Aber ich würde so gern haben, dass das klappt.

    Also die JSESSIONID habe ich gefunden. Was meinst Du mit mitrechenen. An welcher Stelle verändert sich das denn bzw.
    Soll ich die JSESSIONID per Hand einmal rausholen und in mein Script eingeben ? Und dann kann ich das irgendwie mit stream_context_create an die Seite abgeben und dann mit startrow navigieren ?

    Wenn ja, wie genau gebe ich die JSESSIONID an den server ab ? und wenn das einmal geschehen ist kann ich file_get_contents die richtigen Zeilen bekomen (also über die zehnte hinaus) ?

    Vielen Dank für eure Unterstützung.

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    besuch die Seite mindestens 1 mal mit einem "vernünftigen" Browser .. Firefox oder besser noch Opera .. dann schaust du nach

    Firefox : Einstellungen -> Datenschutz -> einzelne Cookies ...
    Opera : Einstellungen -> Erweitert -> Cookies, Cookies verwalten

    in der erscheinenden Liste suchst du den Server (also den der basketball-bundesliga) und schaust dir die Cookie-Felder an, die der setzt ..

    in deinem Fall

    basketball-bund.net -> JSESSIONID (6C7489EB19B5339EF0E1642C5DC86703) Beispiel von meinem Rechner

    enthält einen Wert (JSESSIONID), den du mit deinem PHP script verwalten musst.

    da du das Session-Cookie erst bekommst ,wenn du die Seite das erste mal besuchst , rechnest du halt intern "mit" ..

    erster Besuch => startrow=0, danach kannst du navigieren mit den startrow-parametern ..
    sollte eigentlich klappen ...

    Einen Kommentar schreiben:


  • ChrisB
    antwortet
    Zitat von Ralph777 Beitrag anzeigen
    Ich weiß ja auch nicht was in dem Cookie steht, also was ich der Seite übergeben soll....
    In dem Cookie steht eine Session-ID, also musst du erst mal einen Request machen, um dir diese ID zu „holen“.

    cURL zu benutzen, könnte das ganze um einiges einfacher machen, als es selber zu basteln. (Steht allerdings nicht überall zur Verfügung.)

    Einen Kommentar schreiben:

Lädt...
X