2015-12-16 18 views
9

Ho cercato di recuperare il contenuto di una pagina Web (http://3sk.tv) utilizzando file_get_contents. Sfortunatamente, l'output risultante manca di molti elementi (immagini, formattazione, styling, ecc ...), e sostanzialmente non assomiglia alla pagina originale che sto cercando di recuperare.file_get_contents che non restituiscono l'intera pagina web

Questo non è mai successo prima con altri URL che ho provato a recuperare utilizzando questo stesso metodo, ma per qualche motivo, questo particolare URL (http://3sk.tv) si rifiuta di funzionare correttamente.

Il codice che sto utilizzando è:

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

Mi sto perdendo qualcosa? Tutti i suggerimenti su come farlo funzionare correttamente sarebbero molto apprezzati. Grazie a tutti per il vostro tempo e considerazione.

+0

Si consiglia di utilizzare 'cURL' per questo. [vedi qui per i dettagli] (https://davidwalsh.name/curl-download). Anche essere stanco, raschiare non è sempre legale ... – chriz

+0

Ho provato a usare l'implementazione dell'arricciatura a cui si riferiva, purtroppo non ci sono stati cambiamenti. grazie per il tuo contributo – jameslanvin

+0

Btw questo è per un documento di ricerca uni, non per scopi di scraping – jameslanvin

risposta

4

ho una soluzione rapida per risolvere i percorsi relativi

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

Basta aggiungere al tag del codice <base>.

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

È necessario aiutare.

+0

Ciao @ jQuery00, ho provato ad usare il metodo suggerito, ci sono stati dei miglioramenti nell'output finale (sono comparse le immagini nel corpo) ma mancano ancora molti elementi del CSS e dello styling. Ogni suggerimento sarà molto apprezzato. Grazie – jameslanvin

+0

Ciao @jameslanvin buone notizie per te. Ho trovato un problema e ho aggiornato la domanda.Ora funziona come un fascino! – jQuery00

+1

Ho appena testato di nuovo, signore, sono l'addetto ai file_get_contents! eccezionale. Funziona quasi perfetto! Grazie – jameslanvin

5

Questo è un comportamento normale, come si sta solo afferrando il file, e non immagini correlate, fogli di stile ecc ...

+0

Il vostro diritto assoluto non ricarica immagini o CSS ... Qualche idea/suggerimenti su come recuperare l'intero contenuto ?? – jameslanvin

3

Questo è da aspettarselo. Se osservi il codice sorgente, noterai molti posti che non hanno un URL completo (exlib/dropdown/dropdown.css). Ciò indica al browser di assumere http://3sk.tv/lib/dropdown/dropdown.css. Tuttavia, sul tuo sito web, sarà YOURURL.COM/lib/dropdown/dropdown.css, che non esiste. Questo sarà il caso di gran parte del contenuto.

Quindi, non è possibile stampare solo la fonte di un altro sito Web e aspettarsi che funzioni. Deve essere lo stesso URL.

Il modo migliore per incorporare un altro sito Web è in genere l'uso di uno iframe o some alternative.

2

La pagina Web non è stata generata completamente lato server, ma fa molto affidamento su JavaScript dopo il caricamento della parte HTML. Se stai cercando di visualizzare la pagina come appare nel browser, potresti aver bisogno di un browser headless invece - vedi ad es. questo legame con PhantomJS: http://jonnnnyw.github.io/php-phantomjs/

+1

(come per "questo non è mai successo prima" - preparatevi, siete stati fortunati finora, questo succede praticamente tutto il tempo) – Piskvor

+0

"preparatevi" <= buono a sapersi grazie. Attualmente sto testando la soluzione che hai suggerito (aspettando solo che i phantomjs costruiscano ... un lungo processo) ti faccia sapere come è andata presto. – jameslanvin

Problemi correlati