[cURL] Bestimmte Daten einer Seite holen

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

  • [cURL] Bestimmte Daten einer Seite holen

    H,
    nachdem mir das letzte mal schon so gut geholfen wurde,hoffe ich heute auch wieder auf eure mithilfe.
    Folgendes Problem, ich solle mit cURL von einer Seite die Namen und Addressen holen:
    http://www.rechtplus.de/kanzleiverze...nc=20&auswahl=
    ich habe es schon geschafft, cURL zu installieren per apt-get install curl und php5-curl. De nfolgenden Code habe ich nun soweit gefunden und zusammengestellt:
    PHP-Code:
    $curlhandle curl_init("http://www.rechtplus.de/kanzleiverzeichnis/
    anwalt_normal.php?suche=1&suchbegriff=012&anwaltnorname=
    &treffer=92&submit=no&ltd_idx=1&ltd_inc=20&auswahl="
    );
    $hp fopen("example_homepage.txt""w+");
    curl_setopt($curlhandleCURLOPT_FILE$hp);
    curl_exec($curlhandle);
    curl_close($curlhandle);
    fclose($hp); 
    Das mit der Datei könnte ich eigendlich noch weglassen, da ich bis jetzt nur die ganze Homepage auslese, aber so kann ich überprüfen was cURL gemacht hat.
    Auf dieser Seite habe alle möglichen Optionen die ich für dne Transfer habe durchgesucht, habe aber keine gefunden, die mir zumindest den HTML-Code entfernt oder ähnliches.
    Also meine Frage ist, ob es eine Möglichkeit mit cURL gibt, nicht den ganzen Code auszulesen, sondern nur die Daten die ich brauche.
    Oder muss ich nun eine PHP-Funktion schreiben, die mir die ganze Homepage umschreibt?
    Hoffe ihr könnt mir helfen.
    MfG Daether
    Zuletzt geändert von wahsaga; 18.07.2006, 09:24.

  • #2
    Soweit ich weiß musst Du wohl oder übel eine Funktion schreiben, die Dir den Inhalt, den Du haben möchtest extrahiert.
    Stichwort: RegEx !!!

    Kommentar


    • #3
      //edit1 :
      Entschuldigung, sollte in meinen anderen Thread.
      Zuletzt geändert von Daether; 18.07.2006, 12:26.

      Kommentar


      • #4
        [...]
        habe aber keine gefunden, die mir zumindest den HTML-Code entfernt oder ähnliches.
        Hast du dir strip_tags() mal angeschaut. Scheint mir genau das zu machen was du willst.
        Also meine Frage ist, ob es eine Möglichkeit mit cURL gibt, nicht den ganzen Code auszulesen, sondern nur die Daten die ich brauche.
        Oder muss ich nun eine PHP-Funktion schreiben, die mir die ganze Homepage umschreibt?
        Ich tippe schwer drauf, dass du dir eine eigene Funktion schreiben musst (obwohl ich CURL nicht wirklich kenne).
        Um das zu machen gibt es diverse Funktionen:
        strpos()
        substr()
        preg_match()
        die dir helfen könnten.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Hi,
          erstmal danke für eure hilfen.
          Hab gerade eher durch zufall noch etwas nettes gefunden
          fgetss(). Wenn ich über diese Funktion die Homempage aus einer Datei auslese werden die Tags automatisch entfernt.

          Kommentar


          • #6
            ... ist zwar nett, aber dann hast Du doch kaum Anhaltspunkte, woher Du die einzelnen Daten extrahierst. Oder habe ich etwas falsch verstanden?

            Kommentar


            • #7
              ok, ich habe es jetzt geschafft, die Daten so wie ich es fast möchte in einen Array zu packen.
              PHP-Code:
              $suchmuster_adresse = ('|^Kanzlei|');
              $suchmuster_name = ('|^[a-z]+,{1}.+$|i');
              $counter 0;

              while (
              $row fgetss($hp,1000)){
                  
              $row trim($row);
                  if (
              preg_match($suchmuster_name,$row) == 1){
                  
              $datenarray[$counter][0]= $row;
                  }
                  if (
              preg_match($suchmuster_adresse,$row) == 1){
                  
              $datenarray[$counter][1]= $row;
                  
              $counter++;
                  }

              Hier noch einmal die Seite von der ich die Daten haben möchte:
              klick mich

              mal ein Auszug was dabei rauskommt:
              Array (
              [0] => Array ( [0] => Munz, Christoph [1] => Kanzlei: Munz, Hille & Partner GbR, Gustav-Adolf-Str. 6 b, 01219 Dresden )
              [1] => Array ( [0] => Reis, Florian [1] => Kanzlei: Reis, Neuostra 18, 01219 Dresden )
              [2] => Array ( [0] => Sauer, Klaus [1] => Kanzlei: Sauer, Schmalwiesenweg 24, 01219 Dresden )

              Mein nächstes Problem was ich nun habe ist, dass ich alle Daten in wieder einen assoziativen Array packen will der aus 6 Teilen besteht:
              Vorname, Nachname, Kanzlei, Strasse, Plz, Ort
              Habe schon daran gedacht mit explode zu arbetien und die Strings nach "," zu trennen, hilft mir aber auch nicht weiter, da z.B. der erste Kanzleiname ein "," hat.
              Jemand ne Idee wie ich das nun trenne?

              Sinn ist es später die Daten so in eine Datenbank zu schreiben, daher möchte ich so eine Art vorbereitenden Array machen aus dem ich später einfach nur Zeile für Zeile einbauen muss.

              @devjam:
              Ich glaube du hast mich etwas missverstanden. Im Endeffekt ist es mir egal "woher" ich alles habe. Wichtig ist nur, dass alles geordnet ist und so umgewandelt wird, dass ich es in eine Datenbank schreiben kann.

              Kommentar


              • #8
                Zähle die Kommas die in jedem Eintrag vorkommen
                PHP-Code:
                $anzahl substr_count($adresse,','); 
                Idealerweise sollten es deren 2 sein. Wenn es 3 sind, dann weisst du, dass der Name auch ein Komma enthält.
                In diesem Falle würde ich die Komma Position mittels strpos() ermitteln und das Komma gegen ein anderes Zeichen tauschen. Dann sollte das explode() mit , funzen

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  cool, danke für den Tip. Man lernt eben immer noch mehr dazu .

                  //Edit 1:
                  Jetzt brauche ich noch ein letztes mal Hilfe zu diesem Projekt.

                  Ich schreibe die Daten die ich ausgelesen habe in eine Datenbank und dort steht dann z.B. unter Name:
                   Christoph   
                  Die   will ich weg habe, also habe ich :
                  PHP-Code:
                  preg_replace("| |","",$dbarray[$i]['Nachname']); 
                  gemacht.
                  Nun sind die Zeilen aber nicht nur von   befreit sonder auch vom Namen an sich! Wie kriege ich das hin, dass nur der Name da steht?
                  MfG Daether
                  Zuletzt geändert von Daether; 18.07.2006, 16:03.

                  Kommentar

                  Lädt...
                  X