Comment sauvegarder "complete webpage" pas seulement du html de base en utilisant Python
j'utilise le code suivant pour sauvegarder la page Web en utilisant Python:
import urllib
import sys
from bs4 import BeautifulSoup
url = 'http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html'
f = urllib.urlretrieve(url,'test.html')
Problème: ce code sauve html comme html de base sans javascripts, images etc. Je veux enregistrer la page web complète (Comme nous avons l'option dans le navigateur)
mise à Jour: J'utilise maintenant le code suivant pour enregistrer tous les fichiers js / images/css de webapge afin qu'il puisse être enregistré en tant que page web complète, mais ma sortie html est en train d'être enregistrée comme html de base:
import pycurl
import StringIO
c = pycurl.Curl()
c.setopt(pycurl.URL, "http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html")
b = StringIO.StringIO()
c.setopt(pycurl.WRITEFUNCTION, b.write)
c.setopt(pycurl.FOLLOWLOCATION, 1)
c.setopt(pycurl.MAXREDIRS, 5)
c.perform()
html = b.getvalue()
#print html
fh = open("file.html", "w")
fh.write(html)
fh.close()
2 réponses
essayez d'émuler votre navigateur avec sélénium. Ce script fera apparaître le save as
dialogue pour la page web. Vous devrez tout de même trouver comment émuler la pression sur Entrée pour le téléchargement, car la boîte de dialogue Fichier n'est pas à la portée de sélénium (la façon dont vous le faites dépend aussi de L'OS).
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
br = webdriver.Firefox()
br.get('http://www.google.com/')
save_me = ActionChains(br).key_down(Keys.CONTROL)\
.key_down('s').key_up(Keys.CONTROL).key_up('s')
save_me.perform()
je pense Également que suivant @Orange suggestion d'accaparer les ressources liées peut être une solution plus simple, donc meilleure. Pourtant, je pense que l'utilisation du sélénium est bon point de départ br.page_source
vous fournira la totalité du dom ainsi que le contenu dynamique généré par javascript.
vous pouvez facilement faire cela avec une simple bibliothèque python 'pywebcopy'
import pywebcopy pywebcopy.core.save_webpage('http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html')
Fait!
Vous aurez votre page web complète dans le dossier suivant
C:\WebCopyProjects\vodafone.de\
Vous pouvez choisir de modifier cet emplacement en passant mirrors_dir='your-choice-location
init
appel..
Ex.
from pywebcopy.core import save_webpage save_webpage( url = 'http://your-site.com/', mirrors_dir = 'your-choice-location` )
Vous aurez html, css, js tout à votre choix de localisation. Fonctionne complètement comme le site d'origine..