2009-12-01 21 views
31

Python ha modo di scaricare l'intera pagina html e il suo contenuto (immagini, css) nella cartella locale dato un URL. E l'aggiornamento del file html locale per selezionare i contenuti localmente.Scarica la pagina html e il suo contenuto

risposta

29

È possibile utilizzare il modulo urllib per scaricare singole URL, ma questo sarà solo restituire i dati. Non analizzerà l'HTML e scaricherà automaticamente cose come file e immagini CSS.

Se si desidera scaricare la pagina "intera", è necessario analizzare l'HTML e trovare le altre cose che è necessario scaricare. È possibile utilizzare qualcosa come Beautiful Soup per analizzare il codice HTML che si recupera.

This question ha un codice di esempio che fa esattamente questo.

6

È possibile utilizzare l'urlib:

import urllib.request 

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

Che solo sembra scaricare una pagina tenendo conto codici di risposta HTTP; in realtà non scarica le risorse della pagina a meno che manchi qualcosa. – bdeniker

8

Quello che stai cercando è uno strumento di mirroring. Se ne vuoi uno in Python, PyPI elenca spider.py ma non ho esperienza con esso. Altri potrebbero essere migliori ma non lo so - io uso 'wget', che supporta getting the CSS e le immagini. Questo fa probabilmente quello che volete (citando da the manual)

recuperare solo una pagina HTML, ma fare in modo che tutti gli elementi necessari per la pagina da visualizzare, come ad esempio immagini in linea e di stile esterno lenzuola , vengono anche scaricati. Rendi anche sicuro che la pagina scaricata faccia riferimento ai collegamenti scaricati.

wget -p --convert-links http://www.server.com/dir/page.html 
Problemi correlati