[SOLVED] Website Quellcode auslesen - Problem mit Javascript

    • Offizieller Beitrag

    Ich hab da ein Tool, das liest die Immobilieneinträge von diversen Webseiten aus, und filtert sie nach bestimmten Kriterien.
    Jetzt steh ich vor einem Problem mit immoibilenscout24.
    Die bauen offensichtlich dynamisch per Javascript die ganze Seite auf, allerdings NACHDEM der Browser sie geladen hat! Schau ich mir nämlich den Quelltext vom Browser an, steht dort, wo die ganze Liste mit Einträgen kommt, nur folgendes:

    Code
    <div class="at-page-slide-menu-close"></div><script type="text/javascript">IS24AT.resultListFilterRealtorName='';</script><div id="at-ng-root" data-ng-app="resultlist" class="at-layout-centered"><div data-ng-view class="at-layout-wrapper"></div></div>

    Da ich die Seiten mit phantomjs auslese, und den Quelltext dann mit grep/cat/sed filtere, bekomm ich leider die Daten nicht mehr :(
    Kann mir jemand (Cyber? :) ) da nen Tipp geben, wie ich das doch noch hinbekommen könnte?


    EDIT: Ja, danke nochmal Cyber, für den Denkanstoß! Nachdem ich phantomjs auf 2.1.1 upgedated hatte, lief alles wieder wie geschmiert :)

  • Wenn's per AJAX nachgeladen wurde, also quasi clientseitig, kommst serverseitig nicht an den Gesamtoutput. Ich nehme an, das phantomjs Util, das du nutzt, scraped ja auch nur den Quellcode einer Seite wie wget, aber halt leider nur den serverseitigen Output, also der, der schon im Quelltext serverseitig ausgegeben wird.

    • Offizieller Beitrag

    Ja, ähnlich wget, aber schon besser. Es Is sozusagen ein headless browser. Man kann von phantomjs z.B. die Website auch als PNG rendern lassen. Dabei kommt dann genau das raus, was man auch mim Browser sehen würde.


    Aber: ich hab die immoscout-seite auch mim Browser getestet, und die security hoch gedreht, und da fehlt dann der ganze content auch. Scheint also wirklich clientseitig irgendwas nachgeladen/erstellt zu werden, das speziellere Javascript-Einstellungen braucht ..
    Na blöd. Wird wohl vorerst nix meht mit Daten scrapen .. :)
    Danke für Deinen Input!

  • Habe nochmal geschaut, da ein headless browser eigentlich AJAX-Requests einschließen sollte (die nutzen übrigens AngularJS zum Nachladen der Daten), da sonst ja so Sachen wie Page Speed Monitoring inakkurat wären.


    Mit folgendem Code schreib ich mir den Output inkl. Inseratdaten in eine Datei. Vielleicht hilft das?


    Hier mein Output inkl Wohnungsdaten: http://bit.ly/1OqZ2Uk


    Nutze PhantomJS 2.1.1 auf Ubuntu 14.04 LTS 64 Bit, aufgerufen über CLI.