Как сохранить "полную веб-страницу" не только базовый html с помощью Python

Я использую следующий код для сохранения веб-страницы с помощью 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')

2 ответов


попробуйте эмулировать свой браузер с помощью селен. Этот скрипт будет всплывать save as диалоговое окно веб-страницы. Вам все равно придется выяснить, как эмулировать нажатие enter для загрузки, чтобы начать, поскольку диалоговое окно файла находится вне досягаемости selenium (как вы это делаете, также зависит от ОС).

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()

также я думаю, что после @Amber предложение захвата связанных ресурсов может быть более простым, поэтому лучшим решением. Тем не менее, я думаю, что использование Селена хорошая отправная точка, как br.page_source вы получите весь dom вместе с динамическим контентом, генерируемым javascript.


вы можете легко сделать это с помощью простой библиотеки python "pywebcopy"


import pywebcopy

pywebcopy.core.save_webpage('http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html')

готово!

у вас будет полная веб-страница в следующей папке

C:\WebCopyProjects\vodafone.de\

вы можете изменить это местоположение, пройдя mirrors_dir='your-choice-location to init звонок.. Бывший.

from pywebcopy.core import save_webpage

save_webpage(
url = 'http://your-site.com/',
mirrors_dir = 'your-choice-location`
)

вы будете иметь html, css, js все на вашем-выбор-месте. Полностью работает как оригинальный сайт..