web-dev-qa-db-fra.com

Télécharger la page html et son contenu

python a-t-il un moyen de télécharger toute la page html et son contenu (images, css) dans le dossier local avec une url. Et de mettre à jour le fichier html local pour choisir le contenu localement.

39
bocca

Vous pouvez utiliser le module urllib pour télécharger des URL individuelles, mais cela ne fera que renvoyer les données. Il n'analysera pas le HTML et ne téléchargera pas automatiquement des éléments comme les fichiers CSS et les images.

Si vous souhaitez télécharger la page "entière", vous devrez analyser le code HTML et trouver les autres éléments à télécharger. Vous pouvez utiliser quelque chose comme Beautiful Soup pour analyser le code HTML que vous récupérez.

Cette question a un exemple de code faisant exactement cela.

35
Dave Webb

Ce que vous recherchez est un outil de mise en miroir. Si vous en voulez un en Python, PyPI répertorie spider.py mais je n'en ai aucune expérience. D'autres pourraient être meilleurs mais je ne sais pas - j'utilise 'wget', qui supporte obtenir le CSS et les images. Cela fait probablement ce que vous voulez (en citant le manuel )

Récupérez une seule page HTML, mais assurez-vous que tous les éléments nécessaires à l'affichage de la page, tels que les images en ligne et les feuilles de style externes, sont également téléchargés. Assurez-vous également que la page téléchargée fait référence aux liens téléchargés.

wget -p --convert-links http://www.server.com/dir/page.html
11
Andrew Dalke

Vous pouvez utiliser l'urlib:

import urllib.request

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