Domanda

Ho diverse pagine Web su diversi siti che voglio rispecchiare completamente. Ciò significa che avrò bisogno di immagini, CSS, ecc. E che i link debbano essere convertiti. Questa funzionalità sarebbe simile all'utilizzo di Firefox per " Salva pagina con nome " e selezionando " Pagina Web, completa " ;. Vorrei nominare i file e le directory corrispondenti come qualcosa di sensato (ad esempio myfavpage1.html, myfavpage1.dir).

Non ho accesso ai server e non sono le mie pagine. Ecco un link di esempio: Click Me!

Un po 'più di chiarimenti ... Ho circa 100 pagine che voglio rispecchiare (molte da server lenti), cercherò il lavoro su Solaris 10 e scaricherò i risultati ogni ora su un supporto samba per le persone vedere. E, sì, ovviamente ho provato a wget con diverse bandiere diverse ma non ho ottenuto i risultati per cui sto cercando. Quindi, indicare la pagina wget GNU non è davvero utile. Vorrei iniziare da dove sono con un semplice esempio.

 wget --mirror -w 2 -p --html-extension --tries=3 -k -P stackperl.html "https://stackoverflow.com/tags/perl"

Da questo, dovrei vedere la pagina https://stackoverflow.com/tags/perl nel file stackper.html , se avessi le bandiere corrette.

È stato utile?

Soluzione

Se stai solo cercando di eseguire un comando e ottenere una copia di un sito web, usa gli strumenti che altri hanno suggerito, come wget , curl o alcuni degli strumenti della GUI. Uso il mio strumento personale che chiamo webreaper (non è Windows < a href = "http://www.webreaper.net/" rel = "nofollow noreferrer"> WebReaper . Ci sono alcuni programmi Perl che conosco, tra cui webmirror e alcuni altri che puoi trovare su CPAN .

Se stai cercando di farlo all'interno di un programma Perl che stai scrivendo (dato che hai il tag " perl " nella tua risposta), ci sono molti strumenti in CPAN che può aiutarti in ogni passaggio:

Buona fortuna, :)

Altri suggerimenti

Per una versione HTML dei tuoi siti potresti utilizzare WinHTTrack, un programma GPL gratuito e open source disponibile. Ridurrà le versioni pre-renderizzate di pagine, grafica, documenti, file zip, filmati, ecc ... Naturalmente, poiché si tratta di una copia speculare, qualsiasi codice di backend dinamico come le chiamate al database non sarà più dinamico.

http://www.httrack.com/

Personalmente, l'ultima volta che ho avuto l'impulso di farlo, ho scritto uno script Python che ha creato una copia della mia cache del browser, quindi ho visitato manualmente tutte le pagine che desideravo rispecchiare. Una soluzione molto brutta, ma ha il bel vantaggio di non innescare alcuna, "non grattare la mia pagina" allarmi. Grazie alla barra delle schede dei link di Opera , " manualmente " scaricare decine di migliaia di pagine non è stato così difficile come pensi.

Farò eco a " non è chiaro " commento. Queste pagine / siti Web sono stati creati e si desidera distribuirli su più server? In tal caso, usa i riferimenti relativi nel tuo HTML e dovresti essere OK. In alternativa, utilizzare a in your e modificarlo su ciascun sito. Ma la relatività è davvero la strada da percorrere.

O stai dicendo che desideri scaricare siti Web (come la home page Stack Overflow, perl.com, ecc.) per avere copie locali sul tuo computer? Concordo con Daniel - usa wget.

Jim

Puoi usare gli strumenti di wget gnu per catturare un intero sito in questo modo:

wget -r -p -np -k URL

oppure, se usi perl, prova questi moduli:

  • LWP :: Simple

  • WWW :: Mechanize

Se wget è complicato o non hai una linuxbox puoi sempre usare WebZip

Sembra che tu voglia la funzionalità di memorizzazione nella cache fornita da un buon server proxy.

Forse cerchi qualcosa come SQUID? Abbastanza sicuro che può farlo.

Questa è più una domanda di tipo sysadmin che la programmazione però.

Nella maggior parte dei siti Web moderni il front-end racconta solo una piccola parte della storia. Indipendentemente dagli strumenti per lo stripping di html, css e javascript mancherai comunque la funzionalità di base contenuta nel server.

O forse intendevi qualcos'altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top