Newsgroup: it.lavoro.informatica
Titolo: Interrogare un web form in modo automatico

Ciao ragazzi,
ho un problema che vorrei sottoporre alla vostra attenzione:
supponiamo di avere una pagina web molo utile (non fatta da voi, ma
che esiste in rete), alla quale voi vi collegate per inserire, ad
esempio, il nome di una città; cliccate sul pulsante "submit" e la
pagina vi restituisce un elenco dei musei presenti in quella città.
La domanda è: è possibile creare un programma che faccia questo in
modo automatico? Prendendo le città da un elenco, inserendo il nome
della città nella casella di testo del web form (collegandosi in
qualche modo al sito che offre questa pagina), e prelevando le
informazioni sui musei, magari salvandole in un database o in un file
xml? Senza che sia l'operatore a farlo manualmente?
Mi basterebbe sapere dove dovrei indirizzare le mie ricerche in rete
per studiare la tecnologia (o le tecnologie che fanno questo).
Grazie a tutti voi e alle eventuali risposte. Non ho proprio idea di
come fare. :)
Luca Paolucci

 per studiare la tecnologia (o le tecnologie che fanno questo).
Prendi Python/Perl/Ruby, guarda come � fatto il form (fa una post da 
qualche parte guarda dove la fa e come, i campi), poi prendi il 
risultato e vedi come � fatta la pagina.
Quello che devi fare � simulare la chiamata e parsarne il risultato. 
Volendo (ma proprio volendo) ce la fai anche con curl e grep, ma con un 
linguaggetto dinamico � pi� facile.
  ngw
-- 
Nicholas Wieland (ngw)
Zooppa CTO
911 Western Avenue, Suite 420
Seattle, WA  98104  US

 per studiare la tecnologia (o le tecnologie che fanno questo).
ti hanno gi� dato delle direttive per il python. in java ti posso invece 
indirizzare qui:
http://hc.apache.org/httpclient-3.x/tutorial.html
per il parsing html imho puoi arrangiarti con stax di cui c'� una 
implementazione dentro java6:
https://sjsxp.dev.java.net/
il resto va scritto, ovviamente.

   ngw
Grazie ngw, immaginavo che Phyton sarebbe stato utile.
Ricapitolando:
1. osservo la pagina che ospita il form, la quale avrà visibile solo
la parte
HTML, ma dalla quale posso capire "quale pagina chiama e con che
metodo: POST ad esempio"
2. prendo la pagina restituita come risultato e guardo come è fatta
(sempre a livello di sorgente)
3. simulo la chiamata in modo automatico, utilizzando Pyhton ad
esempio.
Domande:
a. è irrilevante che, l'unico codice che posso vedere, è quello
l'html, visto che lo script è ovviamente nascosto quando clicco "view
source" dal Browser, mi basta come informazione?
b. c'è un tutorial o un insieme di pagine che trattano di questo
all'interno della documentazione Python?
Ciao ngw e grazie! :)
Luca Paolucci

 il resto va scritto, ovviamente.
Grazie rootkit! Non è la prima volta che non mi lascio sfuggira
qualche tua "dritta" relativa al "problem solving". *La pratica*,
insomma! :)
I link che hai postato sono di utilità vitale per me: le tecnologie
che conosco meglio sono proprio aspnet (C#) e java (J2EE).
Grazie di cuore e a rileggerti!
:)
Luca Paolucci

 modo automatico? 
Ti hanno gi� suggerito come fare tecnicamente. Devi per� anche 
verificare che tu lo possa fare legalmente !

 verificare che tu lo possa fare legalmente !
La tua domanda è giusta, effettivamente il problema non me l'ero posto
in questi termini, o meglio: mi chiedevo se un programma del genere
non corra il rischio di sovraccaricare il server che fornisce questo
servizio, con richieste continue (magari dovute alla dimensione del
file che contiene le città).
Realizzerò il programma con le tecniche che mi sono state indicate da
ngw (per vedere come lavora Python) e da rootkit (peché Java è la
tecnologia che cononosco sicuramente meglio di Python), perchè ci sono
alcune applicazioni aziendali che hanno bisogno di applicazioni di
questo tipo (penso, ad esempio, ad aziende come telecom che forniscono
siti con pagine sulle quali consultare i db per informazioni da dare
alla propria rete di venditori, ad esempio).
Nel mio caso la curiosità è nata perchè spesso, quando pianifico una
vacanza e ho un insieme di città possibili tra le quali scegliere, tra
le cose che guardo verifico i posti interssanti da visitare, tra cui i
musei. Per quanto riguarda il sito in questione scriverò una mail e
chiederò il permesso prima di farlo, Poco ma sicuro!
:)
Grazie FP per aver sollevato la questione. Ciao!
Luca Paolucci

 l'operatore a farlo manualmente?
Con Python puoi usare Mechanize
http://wwwsearch.sourceforge.net/mechanize/
-- 
"Le opinioni dei fanatici prescindono dai fatti"
python -c "print 'bG9ybWF5bmFAZ21haWwuY29t'.decode('base64')"
Linux Registered User: 461615

 l'operatore a farlo manualmente?
In Python puoi utilizzare Mechanize:


 
http://wwwsearch.sourceforge.net/mechanize/
Scusate, mi è andato in crash il newsreader e pensavo che non mi avesse 
inviato il primo messaggio


 :)
prego. ma attenzione che la risposta potrebbe non essere html, anzi se 
il sito � fatto a modo probabilmente non lo �. niente di grave solo che 
ti devi aspettare un altro formato (xml, json) magari anche pi� facile 
da gestire.

 >
http://wwwsearch.sourceforge.net/mechanize/
Grazie Lorenzo, hai completato le informazioni di ngw con questo link.
Ciao!
:)
Luca Paolucci

 di terzi.
Ciao Osid,
grazie davvero per un post che rasenta quasi la perfezione
(l'informazione con PHP mi mancava). Sei stato davvero molto gentile.
Ho quotato tutto perché ho visto che hai impostato la cancellazione
automatica; siccome salverò il thread vorrei che queste informazioni
preziose rimanessero "a lunga memoria" :)
Per quanto riguarda la domanda che mi fai (ogni tanto leggo quello che
scrivi e una sottile vis polemica non manca mai :)) ti rispondo con
piacere: sono un informatico anche se non sviluppo più direttamente,
ecco. Però quello che dici è giusto: anche secondo me un informatico
deve, se non poter far tutto, almeno essere in grado di fornire delle
linee guida (ovviamente riferendosi allo sviluppatore software,
parliamo delle competenze riferite al linguaggio, o linguaggi, che
utilizza o sui quali dice di essere "esperto").
Diciamo che di solito mi riesce, altre volte no. :) in questo caso non
sapevo proprio come trovare l'informazione che mi serviva dalla
documentazione a disposizione in Internet e il newsgroup mi è venuto
in aiuto in modo molto molto prezioso.
In linea di principio trovo giusta la tua osservazione, è per questo
che mi sono premurato di ringraziare tutti quelli che hanno avuto la
gentilezza di rispondere, proprio perchè NON è dovuto.
Ciao!
Luca Paolucci

 e il newsgroup mi ï¿œ venuto in aiuto in modo molto molto prezioso.
dal mio punto di vista, chi ti ha risposto non ha fatto altro che seguirti 
in un totale OT: questo gruppo parla del lavoro dell'informatico inteso 
come professione, non di "come faccio a fare questo lavoro".
-- 
DES

 che contiene le città).
Al di la` del sovraccaricamento del server che potrebbe anche non 
esserci, per correttezza dovresti contattare l'amministratore del sito in 
questione.
Magari lui "campa" sui banner pubblicitari, e tu, bypassando l'accesso al 
sito, gli generi traffico non remunerato.
Se lo approcci gentilmente, potreste anche mettervi d'accordo per 
realizzare una RPC che ti permetta di interrogare il sito senza doverne 
fare il parsing brutale. Magari nel tuo software visualizzi comunque un 
banner del suo sito e siete contenti tutti e due.
Bye.

 come professione, non di "come faccio a fare questo lavoro".
Ma dai! Se anche tu in passato hai risposto a post "su come fare
questo lavoro". Cos'è? Vai a "simpatia"?
L'arroganza è tutta tua, e qui mi fermo, per non alimentare polemiche
inutili.
Luca Paolucci


Grazie Alessandro, farò come mi hai consigliato, perché effettivamente
avevo visto un banner e credo che sia come dici tu.
Ciao!
Luca

 questo lavoro".
ottimo, una bella bacchettata ad una rara discussione tecnica era proprio 
quello che serviva a questo newsgroup decadente.

 da gestire.
Per fortuna la risposta è in formato html, anche se il file ha
estensione .pl.
Grazie ancora! :)
Luca Paolucci

 quello che serviva a questo newsgroup decadente.
Che poi, tra l'altro, i post in cui si chiede qualche dritta su che
tecnologia/ambiente di sviluppo/strumento utilizzare secondo me non
sono OT.

 
i messaggi di osid sono *sempre* da quotare ad imperitura memoria 
acciocchè, tra qualche anno, si renda conto delle cazzate che scrive..
ciò premesso, l'OP non ha fatto nulla di male..
S.

 Luca Paolucci
Ciao Gianmarco