2015-12-16 14 views
9

Ich habe versucht, den Inhalt einer Webseite (http://3sk.tv) mit file_get_contents abrufen. Leider fehlen in der resultierenden Ausgabe viele Elemente (Bilder, Formatierung, Styling usw.), und sie sieht im Grunde nicht wie die ursprüngliche Seite aus, die ich abrufen möchte.file_get_contents nicht gesamte Webseite

Das ist noch nie zuvor mit anderen URLs passiert, die ich versucht habe, mit derselben Methode abrufen, aber aus bestimmten Gründen verweigert diese bestimmte URL (http://3sk.tv) ordnungsgemäß funktioniert.

Der Code Ich verwende ist:

<?php 
$homepage = file_get_contents('http://3sk.tv'); 
echo $homepage; 
?> 

Bin ich etwas fehlt? Alle Vorschläge, wie dies funktioniert, wären sehr willkommen. Vielen Dank für Ihre Zeit und Ihre Aufmerksamkeit.

+0

Ich würde dafür 'cURL' empfehlen. [siehe hier für Details] (https://davidwalsh.name/curl-download). Seien Sie auch müde, Kratzen ist nicht immer legal ... – chriz

+0

Versucht mit der Curl-Implementierung, auf die Sie sich beziehen, leider gab es überhaupt keine Veränderung. danke für deinen Beitrag. – jameslanvin

+0

Btw das ist für eine Uni-Forschung Papier, nicht Kratzzwecke – jameslanvin

Antwort

4

ich eine schnelle Abhilfe haben relative Pfade zu beheben

http://www.w3schools.com/tags/tag_base.asp

einfach Ihren Code <base> Tag hinzuzufügen.

<?php 
$homepage = file_get_contents('http://3sk.tv'); 
echo str_replace(
    '<head>', 
    '<head><base href="http://3sk.tv" target="_blank">', 
    $homepage 
); 
?> 

Es sollte helfen.

+0

Hallo @ jQuery00, versuchte mit der vorgeschlagenen Methode, gab es einige Verbesserungen in der endgültigen Ausgabe (Bilder im Körper erschienen), aber immer noch viele Elemente der CSS & Styling fehlen. Irgendwelche Vorschläge würden sehr geschätzt. Danke – jameslanvin

+0

Hallo @jameslanvin gute Nachrichten für Sie. Ich habe ein Problem gefunden und die Frage aktualisiert.Jetzt arbeite wie ein Zauber! – jQuery00

+1

Habe es gerade nochmal getestet, du Sir, sind die file_get_contents Whisperer! genial. Funktioniert fast perfekt! Vielen Dank – jameslanvin

5

Das ist ein normales Verhalten, da Sie nur die Datei greifen, und nicht verwandte Bilder, Stylesheets etc. ...

+0

Ihr absolut richtig, es nicht Bilder oder CSS neu geladen ... Irgendwelche Ideen/Vorschläge, wie Sie den gesamten Inhalt abrufen? – jameslanvin

3

Dies ist zu erwarten. Wenn Sie sich den Quellcode ansehen, werden Sie viele Orte bemerken, die keine vollständige URL haben (exlib/dropdown/dropdown.css). Dies weist den Browser an, http://3sk.tv/lib/dropdown/dropdown.css anzunehmen. Auf Ihrer Website wird es jedoch YOURURL.COM/lib/dropdown/dropdown.css sein, die nicht existiert. Dies wird für viele Inhalte der Fall sein.

So können Sie nicht einfach die Quelle einer anderen Website drucken und erwarten, dass sie funktioniert. Es muss die gleiche URL sein.

Der beste Weg, um eine andere Website einzubetten, ist in der Regel eine iframe oder some alternative zu verwenden.

2

Die Webseite wird nicht vollständig serverseitig erstellt, sondern nach dem Laden des HTML-Teils stark von JavaScript abhängig. Wenn Sie die Seite so anzeigen möchten, wie sie im Browser aussieht, benötigen Sie möglicherweise stattdessen einen Headless-Browser - siehe z. diese Bindung an PhantomJS: http://jonnnnyw.github.io/php-phantomjs/

+1

(wie für "das ist nie zuvor passiert" - schiebe dich selbst; du hattest Glück, das passiert so ziemlich die ganze Zeit) – Piskvor

+0

"stütze dich selbst" <= gut zu wissen thanx. Ich teste gerade die Lösung, die du vorgeschlagen hast (ich warte nur auf Phantomjs, um ... langen Prozess zu bauen), um dich wissen zu lassen, wie es so bald wie möglich gelaufen ist. – jameslanvin

Verwandte Themen