[Risolto] Prelevare informazioni da un sito (Bash)
[Risolto] Prelevare informazioni da un sito (Bash)
Ciao a tutti
avrei intenzione di scrivere uno script Bash per catalogare film.
Come in tutti i programmi di questo tipo vorrei mettere la possibilita di prelevare le informazioni dei film da un sito (in questo caso IMDb)
Conoscete comandi in bash di questo tipo?
Ho dato una lettura al man di wget ma non sembra fare al caso mio.
Grazie
avrei intenzione di scrivere uno script Bash per catalogare film.
Come in tutti i programmi di questo tipo vorrei mettere la possibilita di prelevare le informazioni dei film da un sito (in questo caso IMDb)
Conoscete comandi in bash di questo tipo?
Ho dato una lettura al man di wget ma non sembra fare al caso mio.
Grazie
Ultima modifica di fiamma il sabato 4 ottobre 2008, 17:16, modificato 1 volta in totale.
Re: Prelevare informazioni da un sito (Bash)
Ho capito che prima devo scaricare la pagina e poi cercare le info nel codice html.............. la vedo dura, molto dura
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: Prelevare informazioni da un sito (Bash)
be, in bash non saprei come fare, comunque dopo aver scaricato la pagina la parsi con awk e qualcos' altro ricercando delle parole chiave che ti interessano
Runtime:
111 min | Japan:112 min
Director:
Quentin Tarantino
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: Prelevare informazioni da un sito (Bash)
Esatto, dovrei prelevare il nome del regista e altre info, ma non mi è chiaro cosa far fare a awk o simili.
Il parsing (o come si scrive) in cosa consiste?
Il parsing (o come si scrive) in cosa consiste?
Re: Prelevare informazioni da un sito (Bash)
Risolto!
Non sarà la fine del mondo come procedimento ma funziona;
#!/bin/bash
lynx -dump http://us.imdb.com/title/tt0401792/ > index.txt
sed -i s/'\[[0-9]\+\]'/''/g index.txt # Cancella [32]
sed -i '/^$/d' index.txt #rimuove le righe vuote
grep -v http* index.txt > prova
##Title
grep -w 'IMDb >' prova > p
sed -i s/'IMDb >'//g p
##Director
if grep -w -q 'Director:' prova
then
grep -A 1 'Director:' prova >> p
else
echo "" >> p
fi
if grep -w -q 'Directors:' prova
then
grep -A 2 'Directors' prova >> p
else
echo "" >> p
fi
##Writer
if grep -w -q Writer prova
then
grep -A 1 Writer prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
if grep -w -q Writers prova
then
grep -A 2 Writers prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Genre
if grep -w -q Genre prova
then
grep -A 1 Genre prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Date
if grep -w -q 'Release Date' prova
then
grep -A 1 'Release Date' prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Runtime
if grep -w -q Runtime prova
then
grep -A 1 Runtime prova >> p
else
echo "" >> p
fi
##Country
if grep -w -q Country prova
then
grep -A 1 Country prova >> p
else
echo "" >> p
fi
##Rating
if grep -w -q 'User Rating:' prova
then
grep -A 1 'User Rating:' prova >> p | sed -i s/'IMDb User Rating:'//g p
else
echo "" >> p
fi
sed -i '/^$/d' p
Ovviamente funziona solo con IMDb.
Non sarà la fine del mondo come procedimento ma funziona;
#!/bin/bash
lynx -dump http://us.imdb.com/title/tt0401792/ > index.txt
sed -i s/'\[[0-9]\+\]'/''/g index.txt # Cancella [32]
sed -i '/^$/d' index.txt #rimuove le righe vuote
grep -v http* index.txt > prova
##Title
grep -w 'IMDb >' prova > p
sed -i s/'IMDb >'//g p
##Director
if grep -w -q 'Director:' prova
then
grep -A 1 'Director:' prova >> p
else
echo "" >> p
fi
if grep -w -q 'Directors:' prova
then
grep -A 2 'Directors' prova >> p
else
echo "" >> p
fi
##Writer
if grep -w -q Writer prova
then
grep -A 1 Writer prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
if grep -w -q Writers prova
then
grep -A 2 Writers prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Genre
if grep -w -q Genre prova
then
grep -A 1 Genre prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Date
if grep -w -q 'Release Date' prova
then
grep -A 1 'Release Date' prova >> p | sed -i s/'more'//g p
else
echo "" >> p
fi
##Runtime
if grep -w -q Runtime prova
then
grep -A 1 Runtime prova >> p
else
echo "" >> p
fi
##Country
if grep -w -q Country prova
then
grep -A 1 Country prova >> p
else
echo "" >> p
fi
##Rating
if grep -w -q 'User Rating:' prova
then
grep -A 1 'User Rating:' prova >> p | sed -i s/'IMDb User Rating:'//g p
else
echo "" >> p
fi
sed -i '/^$/d' p
Ovviamente funziona solo con IMDb.
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Risolto] Prelevare informazioni da un sito (Bash)
!bello 
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Re: [Risolto] Prelevare informazioni da un sito (Bash)
quoto..bello..crap0101 ha scritto: !bello![]()
tu pero' conoscevi gia' il link diretto del film. Per cercare le descrizioni di un film conoscendone solo il titolo? come si potrebbe ricercare? esiste un link dove gli passi il titolo del film e lui ti restituisce la pagina html da parsare? poi si potrebbe anche fare qualcosa di piu' carino con l'aggiunta di zenity o buc....
ciao
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Infatti stò cercando di scrivere questo script con buc.prampa ha scritto:quoto..bello..crap0101 ha scritto: !bello![]()
tu pero' conoscevi gia' il link diretto del film. Per cercare le descrizioni di un film conoscendone solo il titolo? come si potrebbe ricercare? esiste un link dove gli passi il titolo del film e lui ti restituisce la pagina html da parsare? poi si potrebbe anche fare qualcosa di piu' carino con l'aggiunta di zenity o buc....
ciao
Questa è la stringa per cercare il film http://us.imdb.com/Find?for=gomorra
Il problema è che non trova subito la pagina visto l'enorme quantitativo di dati che possiede IMDb, quindi un certo titolo corrisponde ad altri film.
Non conoscendo un rimedio aspetto con impazienza gli sviluppi di buc, magari per delle finestre "interattive" (non so se è giusto il termine)
Io adesso uso Tellico, scrivo il nome del film mi si apre una finestra con l'elenco dei nomi simili, seleziono e mi compare la scheda delle info. Se il film è giusto confermo.
Ora mi stò picchiando con sqlite per archiviare i dati.
Re: [Risolto] Prelevare informazioni da un sito (Bash)
con buc non c'e' la possibilità di aprire nuove finestre? mi spiego meglio: ad esempio all'interno di main.buc la pressione di un pulsante potrebbe attivare il comando buc qualcosa.mc ed aprire cosi' una nuova finestra con la lista dei films? (per poter diventare "interattivo"...).
(magari recuperando i films da un sequenziale.....).
(magari recuperando i films da un sequenziale.....).
perche'? che problemi? chi vince?Ora mi stò picchiando con sqlite per archiviare i dati.
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Spero di vincere io!prampa ha scritto: con buc non c'e' la possibilità di aprire nuove finestre? mi spiego meglio: ad esempio all'interno di main.buc la pressione di un pulsante potrebbe attivare il comando buc qualcosa.mc ed aprire cosi' una nuova finestra con la lista dei films? (per poter diventare "interattivo"...).
(magari recuperando i films da un sequenziale.....).
perche'? che problemi? chi vince?Ora mi stò picchiando con sqlite per archiviare i dati.
La possibilità di aprire qualcosa.mc da main.mc c'è, e in effetti potrebbe essere un idea.
Ma come fare a far visualizzare i link dei film da scegliere?
Re: [Risolto] Prelevare informazioni da un sito (Bash)
forse buc non offre molte possibilità di dinamicizzare...: pero' non lo conosco e non ne so di piu', anzi ne so molto poco.....
Io proverei con dialog/Xdialog (bellissima interfaccia grafica....ci sono affezionato) con uno script semplice tipo questo
lo script chiede il nome del film da ricercare, poi nel punto (A) occorre inserire il codice bash per richiedere il film a imdb e interpretare la pagina html di ritorno come nel tuo esempio per estrarre l'elenco dei film: tale elenco dovrà essere memorizzato nel file $file (formato link + titolo).
Lo script visualizza poi la lista dei film e nel punto (B) inserisci lo script che hai fatto tu.
la stessa cosa anche da shell con read e select, se non vuoi l'interfaccia grafica.....
ciao
Io proverei con dialog/Xdialog (bellissima interfaccia grafica....ci sono affezionato) con uno script semplice tipo questo
Codice: Seleziona tutto
#!/bin/bash
DIALOG=Xdialog
#DIALOG=dialog
file=$HOME/file.txt
tempfile=$HOME/testo
$DIALOG --inputbox "inserisci il titolo del film" 10 50 2> $tempfile
rval="$?"
if [ "$rval" = "0" ]; then
echo `cat $tempfile`
(A)
for f in `cut -d: -f1 $file`; do
lista="$lista $f $f"
done
$DIALOG --title "lista" --menu "seleziona" 0 0 0 $lista 2> $tempfile
rval="$?"
if [ "$rval" = "0" ]; then
echo `cat $tempfile`
(B)
else
echo "scelto cancel..."
fi
else
echo "scelto cancel..."
fi
rm -f $tempfile
Lo script visualizza poi la lista dei film e nel punto (B) inserisci lo script che hai fatto tu.
la stessa cosa anche da shell con read e select, se non vuoi l'interfaccia grafica.....
ciao
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Se scrivo:
wget http://us.imdb.com/Find?for=the+fog
non succede nulla, e se scrivo:
lynx -dump http://us.imdb.com/Find?for=the+fog > file.txt
mi scarica la pagina senza i link dei film.
Mi sa che sono andato avanti con la fantasia. :'(
wget http://us.imdb.com/Find?for=the+fog
non succede nulla, e se scrivo:
lynx -dump http://us.imdb.com/Find?for=the+fog > file.txt
mi scarica la pagina senza i link dei film.
Mi sa che sono andato avanti con la fantasia. :'(
Ultima modifica di fiamma il giovedì 9 ottobre 2008, 16:35, modificato 1 volta in totale.
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Ok
per scaricare la pagina ho dato questo comando:
wget "http://us.imdb.com/find?s=tt&q=kill+bill"
e funizona.
per scaricare la pagina ho dato questo comando:
wget "http://us.imdb.com/find?s=tt&q=kill+bill"
e funizona.
Re: [Risolto] Prelevare informazioni da un sito (Bash)
dovrebbe funzionare anche con lynx -source alposto di -dump selezionando solo i /title/ nell'href.
Poi lo script a che punto è arrivato?
Poi lo script a che punto è arrivato?
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Lo script stà andando a rilento perchè non riesco a prelevare quello che ho evidenziato
[glow=red,2,300]Kill Bill: Vol. 1[/glow]
da questa pappardella di tag ( che ho allegato perchè non riesco ad inviare il messagio)
Un aiutino? :-[
[glow=red,2,300]Kill Bill: Vol. 1[/glow]
da questa pappardella di tag ( che ho allegato perchè non riesco ad inviare il messagio)
Un aiutino? :-[
- Allegati
-
file.txt- (9.41 KiB) Scaricato 31 volte
Re: [Risolto] Prelevare informazioni da un sito (Bash)
Ho trovato questo in giro per la rete:
cat file_4 | grep "href=" | cut -d"/" -f28
Funziona! Mi spiegate perchè?
Perchè cut toglie lo slash e -f28 legge la ventottesima riga?
cat file_4 | grep "href=" | cut -d"/" -f28
Funziona! Mi spiegate perchè?
Perchè cut toglie lo slash e -f28 legge la ventottesima riga?
- crap0101
- Rampante Reduce

- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Risolto] Prelevare informazioni da un sito (Bash)
perchè cut è fatto cosìfiamma ha scritto: Perchè cut toglie lo slash e -f28 legge la ventottesima riga?
man cut
-f, --fields field-list
Stampa solo i campi elencati nella field-list. I campi sono
separati da un TAB per default.
-d, --delimiter delim
Per -f, i campi sono separati dal primo carattere in delim
invece che da TAB.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
