2012-04-01 14 views
0

Ich versuche eine Website für Artikel Titel zu kratzen, aber diese Seite lädt nur die fünf ersten Titel und lädt mehr, wenn der Benutzer die Seite scrollt (JSON ruft mehr Artikel und injiziert in die Seite).PHP Scraping dynamisch geladenen Inhalt

Der Web-Scraper, den ich gebaut habe, funktioniert perfekt, aber findet nur die ersten 5 Standardartikel, und was ich versuche zu erreichen, ist mehr als 5 laden. Gibt es eine Möglichkeit, das mit PHP zu erreichen und wenn Sie es erklären können ich warum/wie es funktioniert Ich würde es sehr schätzen, denn ich liebe es, diese Dinge zu lernen.

+0

Sie müssen Ihren Code schreiben, ohne es wie denken Sie jemand in der Lage sein würden Sie eine Antwort geben? –

+0

anstatt die Seite zu verwerfen, könnten Sie versuchen, direkt auf die Quelle zuzugreifen, injizieren alle POST/GET erforderlichen Parameter mit curl –

+0

Lawrence Vorschlag ist die plausibelste, aber nicht zu wissen, die Website in Frage macht Antwort schwierig. Haben Sie auch überprüft, ob die Site beispielsweise einen RSS-Feed oder eine Sitemap enthält? – Peter

Antwort

3

Sie können den Netzwerkmonitor von chrome verwenden, um die Quelle der AJAX-Anfragen zu protokollieren und dann die von Ihrem WebScraper anzufordern, aber dies ist wirklich ein "make shift api" und bremst, wenn die Seite das JSON-Format ändert Verwenden Sie die PHP-Funktion json_decode, um den JSON zu dekodieren.

, um die Daten zum ersten abrufen, werden Sie file_get_contents

aber dies ermöglicht nur GET Wenn Sie verwenden müssen mehr "erweiterte" Optionen (wie POST) müssen Sie untersuchen cURL

+0

Sie schlagen also vor, die Aufrufe auf der Artikelwebsite nachzuahmen, um die nächsten Ergebnisse zurückzugeben? – Shadow

+0

Das ist tatsächlich, was ich vorschlage, aber es ist knifflige Angelegenheit, weil es wirklich keinen Datenvertrag gibt. Es könnte besser sein, nach einem brauchbaren RSS-Feed oder API zu suchen, aber ich denke, das ist nicht die Idee hinter deinem WebScraper. –

+0

Ja, ich kann sehen, wie das besser funktionieren würde, aber ab sofort gibt es keine Feeds/Apis, die für diesen Zweck verwendet werden können. Mit json-decode würde es mir also möglich sein, mit den Scrolldown-Aufrufen zu interagieren, die auf der Webseite vorkommen, oder dieser Teil musste ausgeführt werden, und dann würde php die Ergebnisse decodieren. – Shadow