PDA

View Full Version : [PHP, ASP, HTML] Uno script per prendere listini da siti e riunirli in una pagina...


Remoz
01-04-2007, 22:39
Ciao a tutti, avrei la necessità di fare una pagina web con uno script che vada a prendere i dati da altre pagine web su internet e me li raggruppi in una sola pagina... Spiego meglio..
Avevo pensato a qualcosa che andasse sulla pagina con i dati di origine, ne spulciasse il codice html e riconoscesse tramite alcuni parametri i dati da utilizzare ed eventualmente li inserisse poi su un database locale o direttamente in una pagina web..
Ma sinceramente non so bene come partire...
Il funzionamento è simile a quello dei lettori RSS, ma non riesco a capire se il linguaggio XML deve essere utilizzato nel sito di origine dei dati per permettere questo "capture" oppure se viene utilizzato per andarli a catturare...
Qualcuno può illuminarmi sulla strada da seguire?

Thx! ;)

Ciauzz

Roberto

cionci
02-04-2007, 10:01
Non è semplice, perché ogni pagina ha il suo formato, quindi devi andarti a spulciare il codice HTML per reperire le informazioni. E ad ogni cambiamento della pagina probabilmente dovrai andare a modificare il tuo codice.
php già di suo permette di andare a prendere pagine web semplicemente passando la url alle funzioni di apertura file, l'unico problema è che molto spesso questa opzione è disabilitata sugli hosting più economici.
Puoi vedere nel riquadro celeste di questo link: http://www.php.net/manual/it/function.file-get-contents.php

Remoz
02-04-2007, 23:28
Ciao, grazie per la risposta!
Allora, ho fatto 2 prove in locale, ed in effetti son riuscito a tirar fuori il contenuto da vari files .txt, .html, anche immagini .gif (come se le aprissi con wordpad...) e printarlo a schermo tramite questo script:

<?php

// Define a context for HTTP.
$aContext = array(
'http' => array(
'proxy' => 'tcp://127.0.0.1:80', // This needs to be the server and the port of the NTLM Authentication Proxy Server.
'request_fulluri' => True,
),
);
$cxContext = stream_context_create($aContext);

// Now all file stream functions can use this context.

$sFile = file_get_contents("http://www.xxxxx.com/xxxxx-xxxxxx.gif", False, $cxContext);

echo "<pre>".htmlspecialchars($sFile)."</pre>";
?>

Ho provato però con dei files presi da vari siti online, e mi da sempre l'errore:

Warning: file_get_contents(http://www.xxxxx.com/xxxxx-xxxxxx.gif) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\Xamppnew\xampp\htdocs\prova.php on line 14

Non capisco una cosa, ma l'opzione che deve essere abilitata come dici tu, lo deve essere in locale (dove gira lo script php che va a prendere i dati..) o in remoto (dove ci sono i dati..) ?

Per il fatto di spulciare il codice html che forma le pagine da cui prendere i dati non è un gran problema, anche se cambiano i contenuti, la struttura rimane la stessa, quindi una volta che ho tutto il codice html della pagina in una stringa di php con vari algoritmi dovrei riuscire a scovare ed estrarre solo quello che mi interessa, no?

E' un'impresa così ardua si? :(

Ah, a proposito, non esiste un comando PHP come HTMPSPECIALCHARS che faccia però lo stesso lavoro con del codice PHP invece che HTML? Ho visto che basterebbe sostituire il primo < dell'apertura php con &lt; ma non posso farlo sostituire solo al primo in automatico, ma lo farebbe a tutti quelli dentro la stringa.. no?

Thx a lot! ;)

Roberto

cionci
03-04-2007, 09:43
L'opzione deve essere abilitata nel php.ini del php dove gira lo script. Comunque il problema non è tanto quando cambiano i contenuti, ma quando cambia la struttura della pagina e su certi siti avviene spesso.
Riguardo alla funzione: devi fare la sostituzione solo della prima occorrenza, giusto ?

http://it.php.net/manual/it/function.strpos.php
e poi fai una sostituzione spezzando la stringa con
http://it.php.net/manual/it/function.substr-replace.php

Remoz
04-04-2007, 00:32
L'opzione deve essere abilitata nel php.ini del php dove gira lo script. Comunque il problema non è tanto quando cambiano i contenuti, ma quando cambia la struttura della pagina e su certi siti avviene spesso.
Riguardo alla funzione: devi fare la sostituzione solo della prima occorrenza, giusto ?

http://it.php.net/manual/it/function.strpos.php
e poi fai una sostituzione spezzando la stringa con
http://it.php.net/manual/it/function.substr-replace.php

Grazie 1000 per le funzioni, non le avevo prese in considerazione queste due!!
Penso che mi preparerò un po' di funzioni varie per il trattamento di stringhe da utilizzare poi nei vari script.. mi sto apprestando a fare un sito in php, e nun se sa mai! ;)

La cosa dell'acquisizione dati da web invece la volevo realizzare per riunire vari listini di hardware informatico dei miei fornitori in un unico listino excel aggiornato, così quando devo prendere qualcosa non devo perdere 2 ore a confrontare vari siti... Ma a sto punto penso che sia più un'utopia che altro, vero? :rolleyes:

Grazie ancora per la disponibilità cionci! ;)

cionci
04-04-2007, 09:35
Non è un'utopia, ma non è una cosa semplice.