Scrape il sito Web multi-frame
Domanda
Sto verificando la nostra applicazione Web esistente, che fa ampio uso di frame HTML . Vorrei scaricare tutto l'HTML in ogni frame, esiste un metodo per farlo con wget o un po 'di scripting?
Soluzione
come aggiunta alla risposta di Steve:
Estendi a qualsiasi host "-H"
L'opzione "-H" attiva lo spanning dell'host, consentendo così alla corsa ricorsiva di Wget di visitare qualsiasi host a cui fa riferimento un link. A meno che non vengano applicati criteri sufficienti per limitare la ricorsione, questi host esterni si collegheranno in genere a un numero ancora maggiore di host, e così via fino a quando Wget finirà per aspirare molti più dati di quanto tu abbia previsto.
Limita lo spanning a determinati domini "-D"
L'opzione "-D" ti consente di specificare i domini che verranno seguiti, limitando così la ricorsione solo agli host che appartengono a questi domini. Ovviamente, questo ha senso solo in combinazione con "-H".
Un tipico esempio potrebbe essere il download dei contenuti di "www.server.com", ma consentire download da "images.server.com", ecc .:
wget -rH -Dserver.com http://www.server.com/
Puoi specificare più di un indirizzo separandoli con una virgola,
es. ‘-Ddomain1.com, domain2.com’.
tratto da: wget manual
Altri suggerimenti
wget --recursive --domains=www.mysite.com http://www.mysite.com
Il che indica che una ricerca per indicizzazione ricorsiva dovrebbe anche attraversare in frame e iframe. Fai attenzione a limitare l'ambito della ricorsione solo al tuo sito web poiché probabilmente non vuoi eseguire la scansione di tutto il Web.
wget ha un'opzione -r per renderlo ricorsivo, prova wget -r -l1 (nel caso in cui il carattere renda difficile la lettura: quell'ultima parte è una L minuscola seguita da un numero uno) La parte -l1 gli dice di ricorrere ad una profondità massima di 1. Prova a giocare con questo numero per grattare di più.