Data scraping in PHP non funziona

puppalmao

Nuovo Utente
25 Nov 2021
4
0
1
Ciao a tutti, sto cercando di recuperare dei dati da un sito web tramite il data scraping in php dal lato server, questo è il codice (ho seguito il tutorial su MRW):
PHP:
$uri = 'https://www.pinksale.finance/#/launchpad/0x18fFf1570A132cBA8bF157145876BFbE56325b2D?chain=BSC';
$get = file_get_contents($uri);
echo $get;
Però come risultato da una pagina vuota, penso chje accada perchè il sito ha bloccato il data scraping, infatti con la home di google funziona.
Qualcuno sa come posso ovviare a questo blocco o risolvere?
Grazie a chi risponderà!
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
432
73
28
Ciao, giusto una piccola indicazione che potrebbe tornare utile per capire come (e se) puoi intervenire o se non ne vale la pena: accedendo a quel sito, i contenuti di quella pagina vengono aggiunti al volo via javascript attraverso delle promise (delle chiamate asincrone a risorse esterne). I contenuti sono quindi disponibili solo una volta che la pagina è aperta sul browser e vengono eseguiti gli script necessari per recuperare i contenuti esterni e mostrarli nella pagina stessa.

Quello che ricevi dal tuo php, presumo non sia un documento vuoto ma probabilmente contiene solo il codice di base html per il quale non viene mostrato nulla con quell'echo perché i contenuti non sono presenti e non vengono comunque caricati se non eseguendo la pagina sul browser e dal sito stesso.

I contenuti vengono infatti caricati con l'esecuzione del javascript presente proprio in quella pagina e di altri file js esterni, che se non eseguiti opportunamente non producono risultato.

Non so se lato server esista qualche particolare tecnica per ottenere il risultato elaborato dall'esecuzione del javascript presente sulla pagina. Presumo di sì ma personalmente non so dirti di più.

La home di google non viene generata da javascript, si tratta di "puro" html, per questo ricevi comunque un output.

penso chje accada perchè il sito ha bloccato il data scraping

In questo caso, più che "bloccare", direi che sono state usate tecniche che rendono difficilmente attuabile lo scraping
 

puppalmao

Nuovo Utente
25 Nov 2021
4
0
1
Ciao, giusto una piccola indicazione che potrebbe tornare utile per capire come (e se) puoi intervenire o se non ne vale la pena: accedendo a quel sito, i contenuti di quella pagina vengono aggiunti al volo via javascript attraverso delle promise (delle chiamate asincrone a risorse esterne). I contenuti sono quindi disponibili solo una volta che la pagina è aperta sul browser e vengono eseguiti gli script necessari per recuperare i contenuti esterni e mostrarli nella pagina stessa.

Quello che ricevi dal tuo php, presumo non sia un documento vuoto ma probabilmente contiene solo il codice di base html per il quale non viene mostrato nulla con quell'echo perché i contenuti non sono presenti e non vengono comunque caricati se non eseguendo la pagina sul browser e dal sito stesso.

I contenuti vengono infatti caricati con l'esecuzione del javascript presente proprio in quella pagina e di altri file js esterni, che se non eseguiti opportunamente non producono risultato.

Non so se lato server esista qualche particolare tecnica per ottenere il risultato elaborato dall'esecuzione del javascript presente sulla pagina. Presumo di sì ma personalmente non so dirti di più.

La home di google non viene generata da javascript, si tratta di "puro" html, per questo ricevi comunque un output.



In questo caso, più che "bloccare", direi che sono state usate tecniche che rendono difficilmente attuabile lo scraping
grazie dei chiarimenti, non sono molto esperto in questo ambito. sai se esiste qualche altro modo per recuperare i dati che si vedono dal browser? (non per forza lato server, in qualunque modo)
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
432
73
28
Modi semplici non ne conosco. Non so se esistano dei software o dei plugin specifici per ottenere ciò che ti serve, magari prova a fare qualche ricerca sul web, se già non l'hai fatta, o attendi qualche altro eventuale suggerimento.

Il metodo di intervento dipende comunque da svariati fattori. In primis c'è il fatto che i contenuti non sono resi immediatamente disponibili su quella pagina ma è necessario che si attenda il loro effettivo caricamento. La questione in questo senso diventa relativamente complessa da gestire.

Io personalmente, in casi del genere, attraverso il browser andrei ad iniettare del javascript direttamente sulla pagina in questione (magari creando un estensione su chrome, o usando un qualche plugin per iniettare codice), in modo da poter creare un sistema di controllo dell'avvenuto caricamento dei contenuti per poi poterli processare come mi serve.

Ma, non per scoraggiarti, ripeto, la cosa non è così semplice o scontata da sviluppare. Di certo è necessario avere una buona base del linguaggio di programmazione adoperato e delle varie tecniche da impiegare per arrivare ad una possibile soluzione.

Non ho comunque soluzioni concrete, i miei sono solo dei consigli in linea teorica. Magari è possibile che ci siano dei sistemi già pronti all'uso o quantomeno dei metodi semplici da applicare. Per quel che mi riguarda, il mio contributo si limita a questi pochi consigli.

Buona continuazione :)
 

puppalmao

Nuovo Utente
25 Nov 2021
4
0
1
Modi semplici non ne conosco. Non so se esistano dei software o dei plugin specifici per ottenere ciò che ti serve, magari prova a fare qualche ricerca sul web, se già non l'hai fatta, o attendi qualche altro eventuale suggerimento.

Il metodo di intervento dipende comunque da svariati fattori. In primis c'è il fatto che i contenuti non sono resi immediatamente disponibili su quella pagina ma è necessario che si attenda il loro effettivo caricamento. La questione in questo senso diventa relativamente complessa da gestire.

Io personalmente, in casi del genere, attraverso il browser andrei ad iniettare del javascript direttamente sulla pagina in questione (magari creando un estensione su chrome, o usando un qualche plugin per iniettare codice), in modo da poter creare un sistema di controllo dell'avvenuto caricamento dei contenuti per poi poterli processare come mi serve.

Ma, non per scoraggiarti, ripeto, la cosa non è così semplice o scontata da sviluppare. Di certo è necessario avere una buona base del linguaggio di programmazione adoperato e delle varie tecniche da impiegare per arrivare ad una possibile soluzione.

Non ho comunque soluzioni concrete, i miei sono solo dei consigli in linea teorica. Magari è possibile che ci siano dei sistemi già pronti all'uso o quantomeno dei metodi semplici da applicare. Per quel che mi riguarda, il mio contributo si limita a questi pochi consigli.

Buona continuazione :)
Ok, grazie. Ho già cercato un po' ma non ho trovato nulla. Vediamo se risponderà qualcun'altro. :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
JackIlPazzo Scraping contenuto menu e relativi data-value? PHP 19
M Trasferire data plugin da un dominio ad un altro WordPress 6
M Visualizzare ultima data registrata MS Access 2
D data in sql in formato ITA PHP 4
E Scrivere una data corrente in un pdf PHP 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T problema data 30/11/-1 PHP 0
Cosina script data aggiornamento pagina Javascript 1
S Raggruppare ed estrarre data più recente MySQL 6
P Ricerca campo data PHP 1
A Raggruppare record con stessa data PHP 13
elpirata Impedire inserimento data di oggi e date passate jQuery 39
U Campo vuoto data errore Fatal error: PHP 2
A recuperare data creazione di un file PHP 6
MarcoGrazia Convertire una data da un formato all'altro Snippet PHP 0
Z Difficoltà codice data PHP 0
Z Data automatica PHP 2
max1974 Salvataggio data errato PHP 3
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
P Access Inserimento data. MS Access 4
max1974 comparazione con data precedente MySQL 8
Valerio93 [PHP] non capisco come mai mi da la data NULL PHP 3
M [PHP] Compilare automaticamente il campo data PHP 5
S [PHP] Da timestamp a data PHP 4
maxnegri [Javascript] TinyDatePicker data format e selezione progressiva. Javascript 0
G [MySQL] Data giornaliera MySQL 0
Cosina [PHP] Cancellare una riga da un file txt in base alla data PHP 1
D [MySQL] cerco sviluppatore data base windows e linux per riparare sito Offerte e Richieste di Lavoro e/o Collaborazione 1
elpirata [MYSQL] Schedulare evento per update del campo data su tabella MySQL 0
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
A Verifica validità data in Java Java 2
R [WordPress] [PHP] Come organizzare data, sala e prestazione WordPress 17
M [PHP] Come display data nella stessa pagina PHP 4
K Data in un form che si collega ad un tabella Ajax 5
M HTML: oggetto data HTML e CSS 1
B Data Registrazione Dominio Domini 1
P [Visual Basic] access sql estrarre id vendite x cli e articolo con data maggiore del recordset Visual Basic 2
C [PHP] Estrapolare solo l'anno da una data di nascita inserita in un campo PHP 8
Q [Javascript] data validate Javascript 2
F [MySQL] Warning 1265 data truncated for column... MySQL 5
G [PHP] estrarre data da timeline yyyy-dd-gg hh:mm:ss PHP 4
L [PHP] ordinare per data PHP 3
G [PHP] convertire data in formato italiano dopo query PHP 6
S [PHP] data e ora esatti PHP 4
paloppa Inserimento data su database MYSQL PHP 2
M [MySQL] Confronto tra variabile varchar e variabile data. PHP 1
T [Javascript] Data Plotting ad Alta Velocità Javascript 0
felino Windows 10 e Boot Configuration Data Windows e Software 5
MarcoGrazia [mysql][mariadb]Raggruppare query in base alla data MySQL 2
V calcolo giorno di fine mese ad una seconda data jQuery 0

Discussioni simili