Newsgroup: it.comp.programmare
Titolo: Consiglio su cosa usare

Salve,
premetto che ho conoscenze di ASP, VisualBasic (Vers.6), C, HTML
ho la necessità di costruire dei programmi che mi permettano di 
estrapolare informazioni dalle pagine web.
Fin'ora ho usato VB6 tuttavia troppo spesso mi trovo in difficoltà.
Per capirci mi serve qualcosa che con "poco e semplice" codice mi 
permetta di navigare fra le pagine, compilare form, gestire cookie ecc.
Qual'è il linguaggio più adatto a tali esigenze? quali manuali 
consigliate?
Ringrazio anticipatamente chi risponderà.

 Ringrazio anticipatamente chi risponderà.
di niente.

 consigliate?
Consiglio il linguaggio Perl 
http://www.perl.it/

 Google e troverai *tutto*.
Ma il PHP non gira lato server? a me servirebbe qualcosa da far girare 
sul desktop. Ovviamente potrei istallare un webserver e farci girare 
gli scipt PHP però lo vedo un po' macchinoso...

 permetta di navigare fra le pagine, compilare form, gestire cookie ecc.
Cioè un browser?
Cosa devi fare? :)
Kindly,
David
-- 
 . ''`.  Debian maintainer | 
http://wiki.debian.org/DavidPaleino
 : :'  : Linuxer #334216 --|-- 
http://www.hanskalabs.net/
 `. `'`  GPG: 1392B174 ----|---- 
http://snipr.com/qa_page
   `-   2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174



Uno tra questi linguaggi (a tua scelta, tanto ognuno ti suggerirà un 
linguaggio diverso):
Python
Ruby
Perl
Personalmente uso Python.
Se scegli questo linguaggio ti consiglio i seguenti moduli:
- BeautifulSoap:
 
http://www.crummy.com/software/BeautifulSoup/documentation.html
  per il parsing delle pagine web
- Mechanize:
 
http://wwwsearch.sourceforge.net/mechanize/
L'ultimo si basa sulle idee di WWW::Mechanize del Perl
Mi sembra ci sia anche un altro modulo simile a Mechanize, ma non ricordo 
il nome.
Se passi su it.comp.lang.python puoi chiedere maggiori informazioni.
Ciao  Manlio Perillo



PHP può anche essere usato per applicazioni client e desktop, ma ti 
suggerisco di tenerti ben alla larga.
Ci sono linguaggi migliori per fare quello che ti serve.
PHP non lo suggerirei nemmeno per applicazioni web, in cui il suo vero 
unico punto di forza è la disponibilità nei servizi di hosting e la 
facilità di deployment.
Ciao  Manlio Perillo

 Cosa devi fare? :)
Una serie di applicazioni che prelevano i dati da pagine internet.
Per accedere a tali pagine può essere necessaria l'autenticazione 
tramite form con gestione di cookies.
In altre parole devo accedere a delle pagine web, ma per arrivarci è 
necessario seguire un determinato percorso che normalmente richiede 
l'interazione con l'utente.

 tramite form con gestione di cookies.
Che io sappia, wget riesce a fare ciò che chiedi.
E dopo "parsi" (bleah, che schifo!) la pagina come vuoi tu: PHP, Python,
Perl, ...
Se sei su Windows, esiste anche lì [1]
[1] 
http://gnuwin32.sourceforge.net/packages/wget.htm
Dalla manpage, qualcosa che dovrebbe fare al caso tuo:
--post-data=string
--post-file=file
    Use POST as the method for all HTTP requests and send the specified
    data in the request body.  "--post-data" sends string as data,
    whereas "--post-file" sends the contents of file.  Other than that,
    they work in exactly the same way.
[..]
--load-cookies file
    Load cookies from file before the first HTTP retrieval.  file is a
    textual file in the format originally used by Netscape’s
    cookies.txt file.
[..]
--save-cookies file
    Save cookies to file before exiting.  This will not save cookies
    that have expired or that have no expiry time (so-called "session
    cookies"), but also see --keep-session-cookies.
--keep-session-cookies
    When specified, causes --save-cookies to also save session cookies.
    Session cookies are normally not saved because they are meant to be
    kept in memory and forgotten when you exit the browser.  Saving
    them is useful on sites that require you to log in or to visit the
    home page before you can access some pages.  With this option,
    multiple Wget runs are considered a single browser session as far
    as the site is concerned.
Nota personale: penso che usare wget, usando le opzioni di cui sopra, magari
facendo qualche giro sia più "semplice" di implementare il tutto in $linguaggio.
My two cents,


 Personalmente uso Python.
Ciao, hai da consigliarmi qualche manuale cartaceo per partire da zero 
con il Python?



Non ho mai letto manuali cartacei, quindi evito di darti indicazioni.
Ti consiglio di partire con un tutorial:
http://docs.python.org/tutorial/index.html
Lo trovi anche in italiano (anche se non aggiornato):
http://docs.python.it/html/tut/
Ciao  Manlio Perillo

 Qual'è il linguaggio più adatto a tali esigenze? quali manuali consigliate?
Direi che Greasemonkey faccia al caso tuo.

 Perl, ...
Interessantissimo wget, soprattutto per la velocità di esecuzione.
L'ho provato e per ora non ho incotrato problemi.
Mi rimane però il dubbio sulle pagine che fanno intenso uso di 
javascript. Cmq è un buon punto di partenza.
Grazie.

 
http://docs.python.it/html/tut/
ok, ti ringrazio, gentilissimo.

> Direi che Greasemonkey faccia al caso tuo.
Ne uscirebbero delle applicazioni dipendenti da Firefox. Non mi piace 
come cosa.

 scipt PHP però lo vedo un po' macchinoso...
ma se hai detto tu di voler gestire la navigazione
"fra le pagine, compilare form, gestire cookie ecc."
bah!
E poi ti assicuro che io ho sviluppato applicazioni
desktop PHP che vanno una meraviglia.

 facilità di deployment.
hai detto niente.

 desktop PHP che vanno una meraviglia.
Questa è un ottima cosa. Non sapevo di questa possibilità. Ci penserò.
Grazie per la dritta.

 Perl, ...
Eccomi di fronte al primo problema: non riesco a passare col metodo 
post il carattere "+".
Ho un form dove il nome di una variabile ha quel carattere e per 
accedere alla pagina successiva serve il valore di quella variabile.
Ho provato a codificare il carattere con urlencode ma non funziona.
Credo che una soluzione esista, poichè provando WinWget (Gui per wget) 
il problema non si presenta.

 Credo che una soluzione esista, poichè provando WinWget (Gui per wget) 
Probabilmente perché fa l'escape dei caratteri :)
Se stai usando PHP, potresti utilizzare urlencode():
$ cat test.php 
#!/usr/bin/env php5
<?php
	echo urlencode($argv[1])."\n";
?>
$ ./test.php "prova con+caratteri%strani"
prova+con%2Bcaratteri%25strani
$
Credo comunque che esistano funzioni simili anche per altri linguaggi.
Ciao,


 Per passare proprio il carattere più, devi utilizzare %2b :)
Si il problema è proprio quello:
Passando %2b tramite interfaccia non ci sono problemi.
Passandolo direttamente a wget non funziona.
Mi spiego meglio con un esempio:
wget "
http://www.sito.com/prova.asp
" --post-data="aa=pippo%2B%2B"
In prova.asp ricevo aa=pippoBB
mentre usando l'interfaccia grafica di WinWGet (che tra l'altro mi 
mostra la stressa stringa comando)
In prova.asp ricevo aa=pippo++
Stessa cosa succede passando tali valori nell'URL
wget "
http://www.sito.com/prova.asp?aa=pippo%2B%2B
"
In prova.asp ricevo aa=pippoBB
mentre usando l'interfaccia grafica di WinWGet:
In prova.asp ricevo aa=pippo++
Misteri della fede?
Cmq veramente potente wget...

 In prova.asp ricevo aa=pippoBB
Appena provato, non riesco a riprodurlo... non è che la tua prova.asp toglie
via quei %2? :)
Guarda:
$ cat /var/www/test.php 
<?php
	print_r($_POST);
?>
$ wget localhost/test.php --post-data="aa=pippo%2B"
[..]
$ cat test.php 
Array
(
    [aa] => pippo+
)
$
Quindi, il + è là.
Posta il codice di "prova.asp"... se puoi :)


 Posta il codice di "prova.asp"... se puoi :)
No, non credo che il problema sia in prova.asp perchè usando 
l'interfaccia WinWGet è tutto ok.
Cmq ecco prova.asp
<%
for each item in Request.form
  Response.write item & vbcrlf & Request.Form(item) &  vbcrlf & vbcrlf
next
for each item in Request.querystring
  Response.write item & vbcrlf & Request(item)
next
%>

Mi servirebbe un sistema per "sniffare" la stringa che effettivamente 
l'interfaccia passa a wget...

 l'interfaccia passa a wget...
Semplicemente, guarda i log del server in locale. :)


 Semplicemente, guarda i log del server in locale. :)
Sono su XP e poi non saprei come si fa.



Uhm, scusa, credevo avessi un server installato in locale...


 problema non si presenta.
Dopo svariati tentativi... svelato l'arcano mistero:
In pratica per "semplificarmi" la vita chiamavo wget attraverso un file 
.bat Il problema è proprio quello. Usando direttamente la shell del Dos 
non ci sono problemi!!!
meglio così'
Grazie comunque per l'aiuto.

 come cosa.
Se non altro e' multipiattaforma.
Se usi il VB6 otterresti applicazioni dipendenti da Windows. E questo non
piacerebbe a me.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 hai detto niente.
Considerando che la vera complessità ormai sta altrove, direi che non è
un gran vantaggio.
-- 
-riko


e di grazia, dove sarebbe questa complessità di cui parli?

 e di grazia, dove sarebbe questa complessità di cui parli?
Organizzazione e manutenzione del codice.
Documentazione e testing.
Ciao  Manlio Perillo

 Documentazione e testing.
con una buona metodologia di progettazione e sviluppo secondo me si
risolvono anche questi aspetti.