CURL / Daten von Website mit tabellen auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • CURL / Daten von Website mit tabellen auslesen

    Hallo

    ich kenne mich mit dem CURL nicht besonders aus und verstehe manche Sachen nicht.

    Ich habe folgende Website wo ich die Daten in eine Array auslesen möchte

    Crushed Ambitions Corporation details - Crushed Ambitions [C-A]

    folgende Tabelleninhalte der Seite werden benötigt

    ---------- Ship type / Victim / System / Time
    1.Datensatz / Hawk / DillonEllett / Olettiers / 2011-03-19
    2.Datensatz / Drake / DillonEllett / Olettiers / 2011-03-17


    mir würde es schon reichen, wenn ich nur die erste Seite der Webseite so auslesen könnte. Würde mir dann eine Schleife bauen, um alle durchzugehen.


    Wäre echt nett wenn mir hier jemand helfen könnte.

    Gruß Seppo

  • #2
    Hallo,

    CURL brauchst du zum Abrufen der Seite, zum Extrahieren der Inhalte dagegen brauchst du DOM.

    Die Art der gewünschten Hilfe solltest du näher erläutern und es sollte auch daraus hervorgehen, was du selbst schon geschafft hast oder zu tun in der Lage bist. Außerdem wäre es tierisch sinnvoll, diese Sachen, die du nicht verstehst, auch zu benennen, sonst kann ich dir nur raten:

    Lies dir manche Kapitel im Handbuch durch und mach manche Tutorials!

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      versuche das gerade nicht über curl sondern über preg_match_allzu lösen


      leider bekomme ich keine ausgabe

      PHP Code:
      <?php
      $url 
      "http://www.crushedambitions.org/killboard/?a=corp_detail&crp_id=8275&view=losses&page=1/";
      $content file_get_contents($url);


      preg_match_all ('/<tr class="kb-table-row-odd">\s{0,1}(.*?)<\/tr>/'$content$hit);

      print_r($hit);

      ?>
      Sollte er jetzt nicht <tr> </tr> mit der Klasse kb-table-row-odd komplett ausgeben ?

      finde die Nomenkaltur von preg_match_all verwirrend :-)

      Vielleicht weiß jemand rat
      Last edited by AmicaNoctis; 23-03-2011, 12:38. Reason: Code-Tags gesetzt

      Comment


      • #4
        HTML mit regulären Ausdrücken zu zerlegen, ist mühsam, fehleranfällig und bei Änderungen an der Struktur der Seite schreibst du alles nochmal neu. Aber wenn es unbedingt sein muss, sieh dir die Modifikatoren an, insbesondere "s".

        Wenn du dich belehren lassen willst, mach es mit DOM und XPath.

        Übrigens gibt es hier Code-Tags, die für Quellcode benutzt werden sollen (siehe Signatur). Wäre nett, wenn du den Beitrag dahingehend ändern könntest.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          Problem bei den ganzen DOM Beispielen im Netz ist, dass diese fast nie funktionieren und so ist es schwer dazu Beispiele rauszusuchen.

          Wäre echt nett wenn mir jemand bei meinem Vorhaben helfen könnte.

          PS : wie markiere ich meinen Quellcode?

          Comment


          • #6
            Funktionierendes Beispiel

            Die Code-Tags hab ich jetzt selbst hinzugefügt.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Comment


            • #7
              bekomme zwar eine Ausgabe finde leider nicht die korrekte Klasse für DIV

              Code:
              <?php
              
              $url = "http://www.crushedambitions.org/killboard/?a=corp_detail&crp_id=8275&view=losses&page=1/";
              $content = file_get_contents($url);
              
              $dom = new DomDocument;
              $dom->preserveWhiteSpace = FALSE;
              $dom->loadHTML($content);
              
              
              $params = $dom->getElementsByTagName('div'); // Find Sections
              $k=0;
              
              
              foreach ($params as $param) //go to each section 1 by 1
              {
                    if($param->getAttribute('class')=='killlist')
                    {
              
              
                    $params2 = $dom->getElementsByTagName('tr'); // Find Sections
                    $j=0;
              
                         foreach ($params2 as $param2) //go to each section 1 by 1
                         {
                           if($param2->getAttribute('class')=='kb-table-row-odd')
                           {
                           echo $param2->nodeValue   ;
                            }
                         $j++;
                         }
              
              
                    }
                    $k++;
              }
              ?>

              Comment


              • #8
                In der Zeile mit "find sections" darfst du nicht vom Dokument ($dom) ausgehen, um die Tabellenzeilen zu finden, sondern musst die vom aktuellen Element ($param) aus suchen.

                Edit:

                Außerdem wird dir der nodeValue von $param2 nicht viel bringen, denn der ist bei Elementknoten immer null. Evtl. suchst du nach textContent oder willst weitere Kinder davon haben?

                Mal ganz davon abgesehen - wäre das mit XPath nicht 100 mal bequemer?:

                PHP Code:
                foreach ($xpath->query("//div[@class='killlist']//tr[@class='kb-table-row-odd']") as $row) {
                    
                // ...

                Last edited by AmicaNoctis; 24-03-2011, 23:09.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Comment


                • #9
                  Edit: OK, scheinbar hat Amica dich verstanden.
                  Last edited by wahsaga; 24-03-2011, 23:12.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Comment

                  Working...
                  X