Utilizzo di Wget per eseguire la scansione ricorsiva di un sito e scaricare immagini


13

Come si ordina a wget di eseguire la scansione ricorsiva di un sito Web e scaricare solo determinati tipi di immagini?

Ho provato a usarlo per eseguire la scansione di un sito e scaricare solo immagini Jpeg:

wget --no-parent --wait=10 --limit-rate=100K --recursive --accept=jpg,jpeg --no-directories http://somedomain/images/page1.html

Tuttavia, anche se page1.html contiene centinaia di collegamenti a sottopagine, che a loro volta hanno collegamenti diretti alle immagini, wget riporta cose come "Rimozione di sottopagina13.html poiché dovrebbe essere rifiutata" e non scarica mai alcuna immagine, poiché nessuna è direttamente collegata a dalla pagina iniziale.

Suppongo che questo perché il mio --accept sia usato sia per dirigere la ricerca per indicizzazione che per filtrare il contenuto da scaricare, mentre lo voglio usato solo per dirigere il download del contenuto. Come posso fare in modo che wget esegua la ricerca per indicizzazione di tutti i collegamenti, ma scarichi solo file con determinate estensioni come * .jpeg?

EDIT: Inoltre, alcune pagine sono dinamiche e vengono generate tramite uno script CGI (ad esempio img.cgi? Fo9s0f989wefw90e). Anche se aggiungo cgi alla mia lista di accettazione (es. --Accept = jpg, jpeg, html, cgi) questi vengono sempre rifiutati. C'è un modo per aggirare questo?

Risposte:


5

Perché non provi a usare wget -A jpg,jpeg -r http://example.com?


La domanda afferma che alcune delle immagini sono in formato /url/path.cgi?query, quindi il tuo suggerimento non le recupererà.
Charles Stewart,

1

Come ti aspetti che wget conosca il contenuto di subpage13.html (e quindi i jpg a cui si collega) se non gli è permesso scaricarlo. Ti suggerisco di consentire HTML, ottenere quello che vuoi, quindi rimuovere ciò che non vuoi.


Non sono del tutto sicuro del motivo per cui i tuoi cgi vengono rifiutati ... c'è qualche errore generato da wget? Forse fai wget verbose ( -v) e vedi. Potrebbe essere meglio come una domanda separata.

Detto questo, se non ti interessa la larghezza di banda e scarichi un sacco, rimuovi ciò che non vuoi dopo, non importa.


Guarda anche --html-extension

Dalla pagina man:

-E

--html-estensione

Se viene scaricato un file di tipo application / xhtml + xml o text / html e l'URL non termina con regexp. [Hh] [Tt] [Mm] [Ll]?, Questa opzione farà sì che il suffisso .html sia aggiunto al nome file locale. Ciò è utile, ad esempio, quando si esegue il mirroring di un sito remoto che utilizza pagine ASP, ma si desidera che le pagine speculari siano visualizzabili sul server Apache di serie. Un altro buon uso per questo è quando stai scaricando materiali generati dalla CGI. Un URL come http://site.com/article.cgi?25 verrà salvato come article.cgi? 25.html.

Si noti che i nomi dei file modificati in questo modo verranno scaricati nuovamente ogni volta che si esegue il mirroring di un sito, in quanto Wget non può dire che il file X.html locale corrisponde all'URL X remoto (poiché non sa ancora che l'URL produce output di tipo text / html o application / xhtml + xml Per evitare questo nuovo download, è necessario utilizzare -k e -K in modo che la versione originale del file venga salvata come X.orig.


--restrict-file-names=unix potrebbe anche essere utile a causa di quegli URL CGI ...


Dovrei smettere di collegare le opzioni di wget .. --no-parentStavo per sottolineare ma mi fermerò qui.
Caro

0

Puoi anche utilizzare MetaProducts Offline Explorer senza programmazione


-1

Prova ad aggiungere l' --page-requisitesopzione


Ciò scarica tutti i media collegati. L'unico modo per usare wget per scaricare immagini è scaricare TUTTO il contenuto su una pagina ?!
Cerin,
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.