Descargue una copia local funcional de una página web [cerrada]

211

Me gustaría descargar una copia local de una página web y obtener todos los css, imágenes, javascript, etc.

En debates anteriores (por ejemplo, aquí y aquí , los cuales tienen más de dos años), generalmente se presentan dos sugerencias: wget -py httrack . Sin embargo, estas sugerencias fallan. Agradecería mucho la ayuda con el uso de cualquiera de estas herramientas para realizar la tarea; Las alternativas también son encantadoras.


Opción 1: wget -p

wget -pdescarga con éxito todos los requisitos previos de la página web (css, images, js). Sin embargo, cuando cargo la copia local en un navegador web, la página no puede cargar los requisitos previos porque las rutas a esos requisitos previos no se han modificado desde la versión en la web.

Por ejemplo:

  • En el html de la página, <link rel="stylesheet href="https://stackoverflow.com/stylesheets/foo.css" />deberá corregirse para apuntar a la nueva ruta relativa defoo.css
  • En el archivo css, background-image: url(/images/bar.png)será necesario ajustarlo de manera similar.

¿Hay alguna forma de modificar wget -ppara que las rutas sean correctas?


Opción 2: httrack

httrackParece una gran herramienta para duplicar sitios web completos, pero no me queda claro cómo usarlo para crear una copia local de una sola página. Existe una gran discusión en los foros de httrack sobre este tema (por ejemplo, aquí ), pero nadie parece tener una solución a prueba de balas.


Opción 3: otra herramienta?

Algunas personas han sugerido herramientas pagas, pero no puedo creer que no haya una solución gratuita disponible.

Brahn
fuente
19
Si la respuesta no funciona, intente: wget -E -H -k -K -p http://example.com- solo esto funcionó para mí. Crédito: superuser.com/a/136335/94039
its_me
También hay software para hacer eso, Teleport Pro .
pbies
3
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
davidcondrey

Respuestas:

262

wget es capaz de hacer lo que le pides. Solo intenta lo siguiente:

wget -p -k http://www.example.com/

El -ple conseguirá todos los elementos necesarios para visualizar correctamente el sitio (CSS, imágenes, etc.). El -kva a cambiar todos los enlaces (para incluir los de CSS e imágenes) para que pueda ver la página en línea, ya que apareció en línea.

De los documentos de Wget:

‘-k’
‘--convert-links’
After the download is complete, convert the links in the document to make them
suitable for local viewing. This affects not only the visible hyperlinks, but
any part of the document that links to external content, such as embedded images,
links to style sheets, hyperlinks to non-html content, etc.

Each link will be changed in one of the two ways:

    The links to files that have been downloaded by Wget will be changed to refer
    to the file they point to as a relative link.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif, also
    downloaded, then the link in doc.html will be modified to point to
    ‘../bar/img.gif’. This kind of transformation works reliably for arbitrary
    combinations of directories.

    The links to files that have not been downloaded by Wget will be changed to
    include host name and absolute path of the location they point to.

    Example: if the downloaded file /foo/doc.html links to /bar/img.gif (or to
    ../bar/img.gif), then the link in doc.html will be modified to point to
    http://hostname/bar/img.gif. 

Because of this, local browsing works reliably: if a linked file was downloaded,
the link will refer to its local name; if it was not downloaded, the link will
refer to its full Internet address rather than presenting a broken link. The fact
that the former links are converted to relative links ensures that you can move
the downloaded hierarchy to another directory.

Note that only at the end of the download can Wget know which links have been
downloaded. Because of that, the work done by ‘-k’ will be performed at the end
of all the downloads. 
serk
fuente
2
Intenté esto, pero de alguna manera los enlaces internos como index.html#link-to-element-on-same-pagedejaron de funcionar.
Rhand
12
Algunos servidores de respuesta con un código 403 si se utiliza wget sin un agente de usuario, se puede añadir-U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4'
nikoskip
45
Si encuentra que todavía le faltan imágenes, etc. intente agregar esto: -e robots = apagado ..... wget realmente lee y respeta el archivo robots.txt; esto realmente me dificultó entender por qué nada ¡trabajó!
John Hunt
24
para obtener recursos del uso de hosts extranjeros-H, --span-hosts
davidhq