Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus Website auslesen - keine eindeutige URL

Einklappen

Neue Werbung 2019

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

  • Daten aus Website auslesen - keine eindeutige URL

    Hi,

    mich würde mal interessieren, wie man automatisiert Daten von dieser Website
    ziehen kann:

    Senatsverwaltung fr Bildung, Wissenschaft und Forschung- Berlin.de

    Da ist eine Liste mit Schulen, nehmen wir als Beispiel mal:
    Senatsverwaltung fr Bildung, Wissenschaft und Forschung- Berlin.de

    Dort finde ich die Adresse, den Leiter usw. und es lassen sich dank eindeutiger ID auch für mehrere Schulen Daten erfassen.

    Links hat man nun aber noch das Schulporträt - dort kann man sich die Anzahl der Lehrer anzeigen lassen. Allerdings hat dieser Link keine
    ID, sondern ist immer der gleiche. Wie kann ich die Daten nun doch automatisiert einlesen?


  • #2
    Ich nehme an dadurch dass du auf die Schule klickst wird die ID in der Session gespeichert und dann entsprechend bei der Lehrerübersicht verwendet. Dass kannst du nur dadurch lösen dass du erst die Schulseite mit der ID aufrufst und danach den Lehrerlink. Dafür musst du dann aber curl oder ähnliches verwenden um die Session mitzutragen.

    Aber hast du überhaupt die Erlaubnis die Seite auszulesen? Ansonsten ist das nämlich nicht unbedingt legal was du veranstalten möchtest! Frag doch lieber mal nach ob sie dir die Daten nicht als XML Feed zur Verfügung stellen können.

    Kommentar


    • #3
      Ich hab nicht vor da etliche Daten abzugreifen, es geht eher um den Lerneffekt.

      Hab cURL jetzt aktiviert, und will zum testen von genau einer Seite die Daten ermitteln.
      Wie geh ich jetzt weiter vor?
      cURL initialisieren, Seite wird geladen. Sieht für den Server so aus, als wäre es ein normaler
      Aufruf via Browser?
      Da ich jetzt ja eine Session hab, öffne ich jetzt normal via PHP das Schulporträt und
      kann dann obwohl keine ID in der URL auf die Daten der via cURL geöffneten Schule
      zugreifen?

      wieviel doch mit php möglich ist, geile Sache.

      Kommentar


      • #4
        Zitat von ACiD Beitrag anzeigen
        Sieht für den Server so aus, als wäre es ein normaler
        Aufruf via Browser?
        Sofern sich dein Script auch wie ein gängiger Browser verhält, ja.
        * passende HTTP-Felder. z.B. "User-Agent". Siehe CURLOPT_USERAGENT

        Streng genommen könnte man einen Browser auch daran erkennen:
        * Wie wurde "Accept", "Accept-Encoding", "Accept-Charset", "Connection" und "Keep-Alive" gesetzt. Verschiedene Browser verhalten sich da unterschiedlich. Ich glaube moderne Browser verwenden z.B. niemals "Connection: Close". Sowas wäre dann wohl vermutlich ein Indiz auf einen Bot.
        * Wie läd der Browser verschiedene Ressourcen auf der Webseite? Chrome läd ja angeblich einiges vor. Tut er das in einer seperaten TCP-Verbindung?

        Aber das nur der Vollständigkeit halber. Macht kein Mensch, ist nicht nur schwer umzusetzen, sondern auch sehr ungenau und unzuverlässig. Vor allem, wenn der Benutzer einen Proxy verwendet.

        Du kannst das am besten mit Wireshark überprüfen.
        Einfach mal den Datenverkehr aufzeichnen, den HTTP-Stream raussuchen und anschauen und überprüfen, welchen "User-Agent" cURL sendet.

        Zitat von ACiD Beitrag anzeigen
        Da ich jetzt ja eine Session hab, öffne ich jetzt normal via PHP das Schulporträt und
        kann dann obwohl keine ID in der URL auf die Daten der via cURL geöffneten Schule
        zugreifen?
        Achte dabei mal unter Wireshark auf die HTTP-Header "Set-Cookie" und "Cookie".

        Damit du die Session beibehälst, muss cURL natürlich das Cookie bei jedem neuen Request mitsenden. Sollte cURL eigtl. automatisch machen.

        Kommentar


        • #5
          Ich hab mir den cookie der Seite mal ausgeben lassen via JS, der ist leer - kann ich ihn daher ignorieren?

          Und wirklich wichtig ist mir nicht, ob die Seite merkt, dass ich kein echter Browser bin, mir ging's da eher um das Prinzip ansich, aber danke für die Erläuterung.

          Bist leider nicht weiter auf die Logik meines Vorhabens eingegangen.
          Haut das so wie oben beschrieben hin?

          - Seite mit ID via cURL öffnen
          - Dann normal via php die Schulporträtseite öffnen und Daten via strpos oder preg_match
          auslesen?

          Oder muß der 2te Schritt auch via cURL abgearbeitet werden?

          Kommentar


          • #6
            Du solltest weiterhin cURL benutzen, da cURL das Cookie dann weiterhin mit jedem Request mitsendet. Ist am einfachsten.

            Zwingt dich aber niemand. Kannst auch alles mit file_get_contents und nen passenden Stream-Context zusammenbasteln. Oder die HTTP-Klassen verwenden. Oder alles mit den Socket-Funktionen selbst bauen.

            Kommentar


            • #7
              Hmm, glaub ich mach was falsch:

              PHP-Code:
              <?php

              echo "cURL am ackern!<br><br>";
              $site "http://www.berlin.de/sen/bildung/schulverzeichnis_und_portraets/anwendung/Schulportrait.aspx?ID=0617108711";
              $ch curl_init($site);
              $fp fopen("schulid.txt""w");
              curl_setopt($chCURLOPT_FILE$fp);
              curl_setopt($chCURLOPT_HEADER0);

              $site2 "http://www.berlin.de/sen/bildung/schulverzeichnis_und_portraets/anwendung/schulpersonal.aspx?view=pers";
              $ch2 curl_init($site2);
              $fp2 fopen("schulpor.txt""w");
              curl_setopt($ch2CURLOPT_FILE$fp2);
              curl_setopt($ch2CURLOPT_HEADER0);

              curl_exec($ch);
              sleep (1);
              curl_exec($ch2);
              sleep (1);

              curl_close($ch);      
              curl_close($ch2);       
              fclose($fp);
              ?>
              Inhalt der ersten Seite wird mir gespeichert, in der 2ten txt steht nur:
              Object moved to <a href="/sen/bildung/schulverzeichnis_und_portraets/anwendung/index.aspx">here</a>

              Hat da jemand einen Tipp für mich?

              Kommentar


              • #8
                PHP: curl_setopt - Manual
                mit CURLOPT_COOKIEJAR ansehen...

                Kommentar


                • #9
                  cookies werden auf der Seite nicht angelegt - bzw. wenn
                  ich
                  PHP-Code:
                  $site "http://www.berlin.de/sen/bildung/schulverzeichnis_und_portraets/anwendung/Schulportrait.aspx?ID=0617108711";
                  $ch curl_init($site);
                  $fp fopen("schulid.txt""w");
                  curl_setopt($chCURLOPT_FILE$fp);
                  curl_setopt($chCURLOPT_HEADER0);
                  curl_setopt($chCURLOPT_COOKIEJAR"cookie.txt"); 
                  versuche, wird nichts in cookie.txt geschrieben.

                  Kommentar


                  • #10
                    Maaaaaan Junge schau dir bitte endlich mal die Seite an. ( Manual )
                    Wir müssen dir heir doch nicht alles auf einem silbernen Tablett servieren
                    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                    Kommentar


                    • #11
                      EDIT:

                      so, läuft jetzt! Ich hab mir nen cookie Editor für firefox installiert, gemerkt, dass doch cookies
                      von der Seite gespeichert werden. (Wobei ich nicht verstehe, warum mit javascript:alert(document.cookie); nichts ausgegeben hat).

                      PHP-Code:
                      <?php

                      $ch 
                      curl_init();

                      $url1 ="http://www.berlin.de/sen/bildung/schulverzeichnis_und_portraets/anwendung/Schulportrait.aspx?ID=0617108711";
                      $cookies="Cookie";

                      curl_setopt($chCURLOPT_URL,$url1);
                      curl_setopt ($chCURLOPT_POST1);
                      curl_setopt($chCURLOPT_HEADER0);
                      curl_setopt($chCURLOPT_COOKIEJAR$cookies);
                      curl_setopt($chCURLOPT_COOKIEFILE$cookies);
                      curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
                      curl_exec($ch);


                      $ch2 curl_init();
                      $url2 ="http://www.berlin.de/sen/bildung/schulverzeichnis_und_portraets/anwendung/schulpersonal.aspx?view=pers";

                      curl_setopt($ch2CURLOPT_URL,$url2);
                      curl_setopt ($ch2CURLOPT_POST1);
                      curl_setopt($ch2CURLOPT_HEADER0);
                      curl_setopt($ch2CURLOPT_COOKIEJAR$cookies);
                      curl_setopt($ch2CURLOPT_COOKIEFILE$cookies);
                      curl_setopt($ch2CURLOPT_FOLLOWLOCATIONtrue);
                      curl_exec($ch2);

                      curl_close($ch);
                      curl_close($ch2);
                      ?>

                      Kommentar

                      Lädt...
                      X