Come ottenere il testo di una pagina usando wget senza html?


17

Se provo wget su una pagina Web, sto ricevendo la pagina come HTML. È possibile recuperare solo il testo di un file senza HTML associato? (Questo è necessario per me poiché alcune delle pagine HTML contengono un programma c che viene scaricato con tag html. Devo aprirlo nel browser e copiare manualmente il testo per creare un file .c.)


1
In realtà è possibile, ma è necessario scrivere alcune funzioni che analizzeranno il codice dalla pagina e lo salveranno come .c. Non è difficile, ma dipende dalla struttura della pagina. Se fornisci un link, qualcuno potrebbe aiutarti con il codice esatto. Altrimenti sedo perlsono i tuoi amici.
precipita il

Risposte:


26

wgetrecupererà solo il documento. Se il documento è in HTML, quello che vuoi è il risultato dell'analisi del documento.

Ad esempio, lynx -dump -nolistpotresti usare , se hai la lince in giro.

lynxè un browser Web leggero e semplice, che ha la -dumpfunzione, utilizzato per generare il risultato del processo di analisi. -nolistevita l'elenco dei collegamenti alla fine, che apparirà se la pagina ha collegamenti ipertestuali.

Come accennato da @Thor, elinkspuò essere utilizzato anche per questo, in quanto ha anche -dumpun'opzione (e deve -no-referencesomettere l'elenco dei collegamenti). Può essere particolarmente utile se cammini attraverso un sito usando -sigh- frames (MTFBWY).

Inoltre, tieni presente che, a meno che la pagina non sia in realtà solo codice C con tag HTML, dovrai controllare il risultato, solo per assicurarti che non ci sia altro che codice C lì.


5

Se non hai installato questi altri strumenti, solo wget, e la pagina non ha formattazione solo testo e collegamenti, ad esempio codice sorgente o un elenco di file, puoi rimuovere l'HTML usando sed in questo modo:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

Questo utilizza wget per scaricare l'origine della pagina su STDOUT e sed per eliminare qualsiasi coppia <> e qualsiasi cosa tra di loro.

È quindi possibile reindirizzare l'output del comando sed sul file che si desidera creare utilizzando>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB: È possibile che nel file sia presente uno spazio aggiuntivo che non si desidera (ad esempio, le righe sono rientrate di alcune colonne)

Potrebbe essere più semplice usare l'editor di testo per riordinare il file (o un formattatore di origine mentre scarichi il codice sorgente C).

Se hai bisogno di fare la stessa cosa semplice per ogni riga del file, puoi includere un comando per farlo nel comando sed (qui rimuovendo uno spazio iniziale):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt

3

solo per aggiungere un altro strumento. Preferisco w3m, che è un lynxbrowser console simile. Potresti voler controllare ciò che è già disponibile sul tuo sistema.

w3m -dump website.html
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.