2009-12-01 18 views
31

¿Tiene python alguna forma de descargar toda la página html y sus contenidos (imágenes, css) a la carpeta local dada una URL? Y actualizando el archivo html local para elegir contenido localmente.Descargar la página html y su contenido

Respuesta

29

Usted puede utilizar el módulo urllib descargar URL individuales, pero esto sólo devolver los datos. No analizará el HTML y descargará automáticamente cosas como archivos e imágenes CSS.

Si desea descargar la página "completa" deberá analizar el HTML y encontrar las otras cosas que necesita descargar. Puede usar algo como Beautiful Soup para analizar el HTML que recupera.

This question tiene un código de ejemplo que hace exactamente eso.

6

Puede utilizar el urlib:

import urllib.request 

opener = urllib.request.FancyURLopener({}) 
url = "http://stackoverflow.com/" 
f = opener.open(url) 
content = f.read() 
+2

que sólo aparece para descargar una página teniendo en cuenta los códigos de respuesta HTTP; en realidad no descarga los recursos de la página a menos que me falta algo. – bdeniker

8

Lo que estás buscando es una herramienta de duplicación. Si quieres uno en Python, PyPI enumera spider.py pero no tengo experiencia con él. Otros podrían ser mejores, pero no sé, uso 'wget', que admite getting the CSS y las imágenes. Esto probablemente hace lo que quiere (citando the manual)

recuperar sólo una página HTML, pero hacen asegurarse de que todos los elementos necesarios para la página que se mostrará, como las imágenes en línea y estilo externa hojas , también se descargan También haga asegúrese de que la página descargada haga referencia a los enlaces descargados.

wget -p --convert-links http://www.server.com/dir/page.html 
Cuestiones relacionadas