Ergebnis 1 bis 19 von 19

Thema: Webseite auslesen

  1. #1
    Contao-Nutzer
    Registriert seit
    07.05.2017.
    Beiträge
    174

    Standard Webseite auslesen

    Guten Morgen,

    Vielleicht hat jemand Tipp, ich versuche, den Inhalt einer Webseite auszulesen. Dazu hab ich folgendes Script:

    PHP-Code:
    function getHTML($url,$timeout)
    {
           
    $ch curl_init($url);
        
           
    curl_setopt($chCURLOPT_USERAGENT$_SERVER["HTTP_USER_AGENT"]); // set  useragent
           
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue); // write the response to a variable
           
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue); // follow redirects if any
           
    curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout); // max. seconds to execute
           
    curl_setopt($chCURLOPT_FAILONERROR1); // stop when it encounters an error
           
    $content= @curl_exec($ch);
           return 
    $content;


    Also, hier wäre die URL:
    https://www.mytischtennis.de/clicktt...-V-/spielplan/

    Ich hab mir auch die Erlaubnis eingeholt, dass ich die Inhalte lesen und darstellen darf.

    Aber der Aufruf:
    PHP-Code:
    $baseUrl "https://www.mytischtennis.de";
         
    $uri$baseUrl."/clicktt/ByTTV/17-18/verein/506007/SpVgg-Hausen-e-V-/spielplan/";

        
    $content=getHTML($uri,10);
        echo 
    $content
    liefert immer ein leeres Ergebnis. Ein ähnliches Script mit DOMDocument funktioniert auch nicht.

    Danke für Tipps und Hinweise.

    VG
    Geändert von Fork-Lift-Driver (13.10.2017 um 11:30 Uhr)

  2. #2
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Code:
    https://www.mytischtennis.de/clicktt/ByTTV/17-18/verein/506007/SpVgg-Hausen-e-V-/spielplan/index.html
    ?
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  3. #3
    Contao-Nutzer
    Registriert seit
    07.05.2017.
    Beiträge
    174

    Standard

    Hi, danke für den Tipp, das geht auch nicht... aber, ich hab grad gesehen, curl_exec gibt ja eh nur true oder false zurück und nicht den Inhalt der Webseite...

    Wo, aber, ist die Response von dem Aufruf?

    VG


    hm, wenn ich z. B. https://www.google.de eingebe, dann kommt diese Website.

    Grüße
    Geändert von Fork-Lift-Driver (13.10.2017 um 11:44 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    09.10.2017.
    Beiträge
    44

    Standard

    Das liegt sehr wahrscheinlich an den Request-Headers. Am einfachstens geht das, wenn Du in Chrome in den Entwickler Tools > Network die Seite neu lädst und Dir dann den Request der html Datei /spielplan/ ansiehst. Dann kopierst Du dir am besten den curl Befehl heraus, das geht mit einem Rechtsklick auf das Dokument und Copy as Curl. Falls Du unter Linux oder Mac bist, öffnest Du ein Terminal und fügst den curl Befehl ein.

    https://i.imgur.com/7LEyEqK.png

    Code:
    curl 'https://www.mytischtennis.de/clicktt/ByTTV/17-18/verein/506007/SpVgg-Hausen-e-V-/spielplan/' -H 'DNT: 1' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: https://community.contao.org/de/showthread.php?68413-Webseite-auslesen' -H 'Cookie: SRV=82; __utmt=1; __utma=74314254.1097616632.1508186607.1508186607.1508186607.1; __utmb=74314254.2.10.1508186607; __utmc=74314254; __utmz=74314254.1508186607.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' --compressed
    Alternativ kannst du dir den curl Befehl auch nach PHP umwandeln lassen mit https://incarnate.github.io/curl-to-php/

    PHP-Code:
    // Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
    $ch curl_init();

    curl_setopt($chCURLOPT_URL"https://www.mytischtennis.de/clicktt/ByTTV/17-18/verein/506007/SpVgg-Hausen-e-V-/spielplan/");
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_CUSTOMREQUEST"GET");

    curl_setopt($chCURLOPT_ENCODING'gzip, deflate');

    $headers = array();
    $headers[] = "Dnt: 1";
    $headers[] = "Accept-Encoding: gzip, deflate, br";
    $headers[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";
    $headers[] = "Upgrade-Insecure-Requests: 1";
    $headers[] = "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
    $headers[] = "Accept: image/webp,image/apng,image/*,*/*;q=0.8";
    $headers[] = "Referer: https://www.mytischtennis.de/clicktt/ByTTV/17-18/verein/506007/SpVgg-Hausen-e-V-/spielplan/";
    $headers[] = "Cookie: SRV=82; __utmt=1; __utma=74314254.1097616632.1508186607.1508186607.1508186607.1; __utmb=74314254.2.10.1508186607; __utmc=74314254; __utmz=74314254.1508186607.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)";
    $headers[] = "Connection: keep-alive";
    $headers[] = "Cache-Control: max-age=0";
    $headers[] = "Authority: ssl.google-analytics.com";
    curl_setopt($chCURLOPT_HTTPHEADER$headers);

    $result curl_exec($ch);
    if (
    curl_errno($ch)) {
        echo 
    'Error:' curl_error($ch);
    }
    curl_close ($ch); 
    Geändert von Glumanda (16.10.2017 um 22:06 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    07.05.2017.
    Beiträge
    174

    Standard

    Hi. Danke für die Hilfe, ich probiere das aus und berichte wieder.
    VG

    Gesendet von meinem GETAWAY mit Tapatalk

  6. #6
    Contao-Nutzer
    Registriert seit
    07.05.2017.
    Beiträge
    174

    Standard

    Guten Morgen,

    @Glumanda: vielen, vielen Dank für den Tipp, das funktioniert grandios *thumbup*

    VG

  7. #7
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Hallo,

    ich betreue selbst auch eine TT Hompage und würde auch gerne Click TT einbinden. Wie sieht es denn rechtlich aus? Darf die Click TT Seite so ausgelesen und eingebunden werden?

    Gruß

    Tefracky

  8. #8
    Contao-Nutzer
    Registriert seit
    23.10.2017.
    Beiträge
    114

    Standard

    Da ich leider keine Edit Funktion finde: Ich habe etwas voreilig geantwortet. Mytsichtennis ist natürlich genauso gut. Bei wem hast du die Erlaubnis denn eingeholt?

  9. #9
    Contao-Nutzer
    Registriert seit
    09.10.2017.
    Beiträge
    44

    Standard

    Wenn wir die Kirche mal im Dorf lassen: Ich glaube kaum, dass die dir das nachweisen können, sofern Du nicht ganze Textpassagen "curlst".

  10. #10
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Glumanda Beitrag anzeigen
    Ich glaube kaum, dass die dir das nachweisen können.
    Die Ansicht finde ich schon etwas bedenklich .
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  11. #11
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Eine Webseite mittels eines Crawlers zu parsen und ausserhalb des dafuer vorgesehenen Bereiches zu nutzen, erfordert immer einer Zustimmung des Betreibers.
    Viele Dienste bestehen nur, da sie durch Werbeeinnahmen die Dienstleistung finanzieren koennen. Dies ist durch eine Umgehung natuerlich nicht mehr gegeben.
    Ich empfehle Dir dringenst, den Betreiber der Dienstleistung zu kontaktieren und wenigstens um Erlaubnis zu fragen.

    Ich gehe davon aus, das der Betreiber dies hier ist : https://wttv.click-tt.de/
    Und dort gibt es eindeutige Hinweise:
    Das automatisierte Auslesen (Parsen) der click-TT-Datenbank ist ebenso wie jede andere optische Aufbereitung/Weiterverarbeitung/Modifizierung der Daten, die in click-TT veröffentlicht sind, nicht gestattet! Ausgenommen hiervon sind die Partner, mit denen der WTTV spezielle Vereinbarungen geschlossen hat.
    Da es aber eine Android App gibt, wird es mit Sicherheit auch eine API geben. Das kann Dir aber der Betreiber sagen.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  12. #12
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Der TO hatte ganz am Anfang geschrieben, dass er die Erlaubnis hat.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  13. #13
    Contao-Nutzer
    Registriert seit
    09.10.2017.
    Beiträge
    44

    Standard

    Meine Güte, unter welchem Felsen lebt ihr denn? Wir reden hier davon, Spielergebnisse von einer Tabelle zu parsen und nicht ganze Absätze an Textlandschaften zu übernehmen. Ihr tut alle so als wäre das Ergebnis ein Geheimnis, das nur über diese eine Seite publiziert werden darf. Ich empfehle dringenst nur mehr mit Bauhelm durch die Stadt zu gehen, weil es könnte ja ein Blumentopf auf den Kopf fallen!!! Und wehe ihr sagt das Ergebnis, das ihr auf dem Fussballplatz live gehört habt weiter, dann werden sofort rechtliche Schritte eingeleitet!!

  14. #14
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.492

    Standard

    Code:
    $start = strpos($result, '<div class="data">') + 27;
    $laenge = strpos($result, '</span', $start) - $start;
    
    if(strpos($result,'<div class="data">')!==false) {
      $teil = substr($result, $start, $laenge);
    } else {
        $teil = "-";
    }
    
    $startalter = strpos($result, '<span itemprop="birthDate" class="dataValue">') + 45;
    $laengealter = strpos($result, '</span>', $startalter) - $startalter;
     
    $alter = substr($result, $startalter, $laengealter);
    
    $startname = strpos($result, '<h1 itemprop="name">') +20;
    $laengename = strpos($result, '</h1>', $startname) - $startname;
     
    $name = substr($result, $startname, $laengename);
    Servus,
    Vorab: Mir liegt die Erlaubnis in dem Fall vor!
    mal eine Frage: ich habe den Quelltext der Seite mittels dieser tollen Anleitung in der $result gespeichert.

    Nun suche ich nach drei Stellen und gebe die an bestimmten Stellen wieder aus. FUnktioniert auch alles ohne Probleme.

    Nun meine eigentliche Frage: Lässt sich das ganze so zusammenfassen, dass man nicht drei mal die $result durchsucht?
    Geändert von Acta (25.10.2017 um 19:26 Uhr)

  15. #15
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Ich wuerde das HTML Geruest in ein DOMDocument laden. Von dort aus, aknnst du dann gezielter udn sicherer die einzelnen Tags und Attribute ansprechen:http://php.net/manual/de/domdocument...sbytagname.php
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  16. #16
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.492

    Standard

    Gezielter bzw. sicherer in welcher hinsicht?

  17. #17
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Du "findest" deine Information aktuell mit strpos und substr. Wenn "aus welchem Grund auch immer" der HTML Code nicht valide ist, kann es schnell passieren, das du falsche Dinge erhaelst.

    Das ist in einem DOMDocument nicht mehr so, da hier die einzelnen XMLNodes als Objekt ansprechbar sind.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  18. #18
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.492

    Standard

    Okay ... wie schauts das mit der Geschwindigkeit aus? Bringt mir das ganze da auch Vorteile?

    Stand jetzt würde ich ja mit CURL die Seite holen richtig?
    Die $result dann per Dom einlesen?

  19. #19
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Richtig.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •