2012-03-28 7 views
4

mit urllib.urlretrieve('http://page.com', 'page.html') Ich kann die Indexseite und nur den Index von page.com speichern. Behandelt urlretrieve etwas Ähnliches wie wget -r, damit ich die gesamte Webseitenstruktur mit allen zugehörigen HTML-Dateien von page.com herunterladen kann?Python - urlretrieve für gesamte Webseite

Mit freundlichen Grüßen

+1

mögliche Duplikat von [Äquivalent von wget in Python zum Herunterladen der Website und Ressourcen] (http: // stackoverflow.com/questions/9221022/equivalent-of-wget-in-python-to-download-website-and-resources) –

+1

Nicht an sich - um das zu tun, müssen Sie den HTML-Code analysieren und nach Links suchen ([wget docs] (http://www.gnu.org/software/wget/manual/wget.html#Recursive-Download)). 'urllib' enthält keinen HTML-Parser, aber Sie können etwas wie lxml.html verwenden. –

+0

Warum können Sie nicht wget oder curl verwenden? –

Antwort

0

Nicht direkt.

Wenn Sie eine ganze Website Spinne über wollen, schauen Sie sich mechanize: http://wwwsearch.sourceforge.net/mechanize/

So können Sie eine Seite laden und folgen Links von ihm

Etwas wie:

import mechanize 
br = mechanize.Browser() 
br.open('http://stackoverflow.com') 
for link in br.links(): 
    print(link) 
    response = br.follow_link(link) 
    html = response.read() 
    #save your downloaded page 
    br.back() 

Wie es steht, das wird dir nur die Seiten einen Link weg von deinem Startpunkt bringen. Sie können es jedoch leicht so anpassen, dass es eine ganze Site abdeckt.

Wenn Sie wirklich nur eine ganze Site spiegeln möchten, verwenden Sie wget. Doing this in Python lohnt sich nur, wenn Sie eine Art clevere Verarbeitung (Umgang mit Javascript, selektiv folgende Links, etc.) tun müssen

Verwandte Themen