Daten von einer Internetseite auslesen.

  • Hallo zusammen,

    mich interessiert gerade die Möglichkeit, Bestimmte Daten einer Internetseite auszulesen und diese in meiner Internetseite anzuzeigen.

    Beispiel:

    Ich spiele ein Online-Game, dieses Spiel besitzt eine Internetseite wo ich meine Statistik nachlesen kann. (zB. wie gut ich spiele)
    Ich habe eine eigene Hompage und Möchte gerne auf dieser zB. meine Punkte von dieser Webseite anzeigen lassen.

    Meine Frage nun, welche möglichkeiten gib es um dies zu realisieren.

    Vielen Dank im Vorraus Oliver

  • kann man mit php fopen() dateien auf anderen servern öffnen?
    ann wärs nämlich nicht schwiereig.... fopen() fgets() explode() und dann fputs() dann haste die statistik in ner textdatei...

  • ja funktioniert ist allerdings nicht erwünscht sage ich mal ... also auf jedenfall vorher den admin von dem spiel fragen ob du das auslesen darfst...

  • Den Admin kenn ich, ich glaube das ist kein Problem.

    Durch stöbern in Foren habe ich Codeschnipsel gefunden den html-Code der seite in ein string zuschreiben.

    Auf einer weiteren Seite habe ich sogar eine Ähnliche Frage gefunden, und er hat ein script bekommen welches:
    1. Die Seite in ein String schreibt.
    2. Den String durchsucht nach <td> .... </td> und dies in ein Arry schreibt
    3. Eine Tabelle aufbaut und die mit den Werten des Array´s füllt.

    Also meine Werte die ich bräuchte sind dabei, nur brauche ich nicht 50 Werte sonder max. 10 und diese alle einzeln. Damit ich sie in eine Variable schreiben kann und dann vielleicht in meine Datenbank speichern kann.

    Hier der Code den ich gefunden habe:
    <?php
    /*########################################################
    # Dieses Script ist von BasicAvid(c) #
    # Samstag, 3.September 2005 #
    ########################################################
    */
    $convert = array(); // ein Hilfsarray
    $start = 0; // wird später benötigt
    $cols = 11; // wieviel Spalten werden benötigt
    $url = "????Zielseite ???"; // Von welcher URL
    $string = "Klasse(n)"; // Wird benötigt um den Anfang festzustellen
    $string2 = "Vertretungs-Text"; // Um das Ende festzustellen
    $arr = file($url); // Datei wird eingelesen


    for($i=0;$i<count($arr);$i++)
    {
    $arr[$i] = strip_tags($arr[$i]); // Tags entfernen
    if(!empty($arr[$i])&& trim($arr[$i]) ) // Prüfen ob nicht Leer und entferne Vor-Nachleerzeichen
    {
    array_push($convert,trim($arr[$i])); // an das Hilfsarray anfügen

    if(trim($arr[$i]) == "") // ist das aktuelle Element gleich HIER FEHLER ""
    array_push($convert,""); // füge noch ein Element an das Hilfsarray an
    }


    }

    for($i=0;$i<count($convert);$i++) // Schleife um den Startpunkt zu ermitteln
    {
    if(!strnatcmp($string,$convert[$i]))
    $start = $i;

    }

    /*
    Hier beginnt das eigentliche darstellen der Daten,
    muss dementsprechend angepasst werden!

    */

    echo "<table border='1' align='center'>\n";

    for($i=$start,$m=0;$i<count($convert)-8;$i++,$m++) // bei count($convert)-8 werden die letzten unnötigen Daten entfernt
    {



    if($m==0) // Anfang einer Zeile
    echo "<tr align='center'>\n";

    if(!strnatcmp("statt",$convert[$i+$j]))
    {
    echo "<td>".$convert[$i+$j]."
    ".$convert[$i+$j+1]."</td>\n";
    $j++;
    }
    else
    echo "<td>".$convert[$i+$j]."</td>\n";


    if($m == $cols) // Ende einer Zeile
    {
    echo "</tr>\n";
    $cols = 2; // Spaltenanzahl auf 12 setzen
    $m=0; // variable zurücksetzen für die nächste Zeile
    }

    }
    echo "</table>\n";

    ?>

  • also das du nur 10 brauchst habe ich geändert....
    aber vielleicht gibst du uns mal die url die du auslesen möchtest dann können wir das besser nachvollziehen.

  • Vielen Dank erstmal für dein Interesse,

    die Seite möchte ich nicht wirklich hier posten, bitte um Verständnis.

    Zu Meinem Problem, das Array auf 10 zubegrenzen bringt es nicht. Mein erster Ansatz ist jetzt das Array Position für Position auszulesen bis ich weis welche Position im Array den Wert enthälte den ich möchte und den dan direkt über Array[xx] in eine Variable zu schreiben und das ca. 10 mal.
    da ich noch nicht weis anwelcher stelle die werte stehen die ich gerne hätte.

    Eine Ähnliche Seite mit statistiken wäre hier:
    http://www.spielerstats.de/ wenn ihr euch eine Statistik von einen Spieler anschaut.

    Mit freundlich Gruß Oliver

  • Einfrage aber noch vorweg, Cooki Du hast gefragt das ich mit dem Admin sprechen sollte, warum?

    Kann ich Schaden auf seiner Seite mit dem Script anrichten?

    Bitte um Antwort!!!

  • also schaden kannst du damit nicht anrichten nein aber die meisten seiten wollen es trozdem nicht das man den inhalt aussliest...

  • Ah, Danke cookie. Ich habe aber trotzdem den Admin informiert. ;)

    So ich bin schon fast an mein Ziel, könntes Du mir noch vielleicht eine Möglich keit nennen wie ich folgenden Code umstricken kann, das ich mehre Seiten also von mehreren Spielern Auslesen kann.

    <?php


    $convert = array(); // ein Hilfsarray
    $start = 0; // wird später benötigt
    $cols = 11; // wieviel Spalten werden benötigt
    $url = "Zensiert"; // Von welcher URL
    $string = "Klasse(n)"; // Wird benötigt um den Anfang festzustellen
    $string2 = "Vertretungs-Text"; // Um das Ende festzustellen
    $arr = file($url); // Datei wird eingelesen

    for($i=0;$i<count($arr);$i++)
    {
    $arr[$i] = strip_tags($arr[$i]); // Tags entfernen

    if(!empty($arr[$i])&& trim($arr[$i]) ) // Prüfen ob nicht Leer und entferne Vor-Nachleerzeichen
    {
    array_push($convert,trim($arr[$i])); // an das Hilfsarray anfügen
    if(trim($arr[$i]) == "") // ist das aktuelle Element gleich HIER FEHLER ""

    array_push($convert,""); // füge noch ein Element an das Hilfsarray an
    }}

    for($i=0;$i<count($convert);$i++) // Schleife um den Startpunkt zu ermitteln
    {
    if(!strnatcmp($string,$convert[$i]))
    $start = $i;
    }

    for($i=$start,$m=0;$i<count($convert)-8;$i++,$m++) // bei count($convert)-8 werden die letzten unnötigen Daten entfernt
    {
    }
    $playername = $convert[2];
    $playerid = $convert[28];
    $lastconnect = $convert[32];
    $totaltime = $convert[34];
    $rank = $convert[40];
    $points = $convert[42];
    $activity = $convert[44];
    $kills = $convert[46];
    $deaths = $convert[48];
    $suicides = $convert[50];
    $killsperdeath = $convert[52];
    $weaponaccuracy = $convert[60];
    ?>


    <html>
    <head>
    </head>
    <body>
    <table border="1" width="100%">
    <tr>
    <td align="center">

    <table border="1" width="600">
    <tr>
    <td rowspan="12" width="200" align="center" valign="middle">Member Foto</td>
    <td width="10"><td>
    <td width="150">Name:</td>
    <td width="200"><?=$playername?></td>
    </tr>
    <tr>
    <td width="10"><td>
    <td width="150">Player ID:</td>
    <td width="200"><?=$playerid?></td>
    </tr>
    <tr>
    <td width="10"><td>
    <td width="150">Rank:</td>
    <td width="200"><?= $rank ?></td>
    </tr>
    <tr>
    <td width="10"><td>
    <td width="150">Points:</td>
    <td width="200"><?= $points ?></td>
    </tr>
    <tr>
    <td width="10"><td>
    <td width="150">Activity:</td>
    <td width="200"><?= $activity ?></td>
    </tr>
    <tr>
    <td width="10"><td>
    <td width="150">Kills:</td>
    <td width="200"><?= $kills ?></td>
    </tr>
    ...

    Wenn ich das jetzt für 2 oder mehr Spieler machen wollte wird das sehr unübersichtlich. Wie müsste ich eine Schleife anfangen das ich belibig viele URL angeben könnte, ... und er mir unten Tabelle für Tabelle so aufbauen würd?

    Vielen Dank erstmal bis hier her.
    Gruß Oliver ;)