如何使用Python保存“完整网页”而不仅仅是基本html

我正在使用以下代码使用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')

:此代码将html保存为基本html,而不包含javascript,图像等。我想将网页保存为完整(就像我们在浏览器中有选择)

:我现在正在使用以下代码保存webapge的所有js / images /

css文件,以便可以将其保存为完整的网页,但是仍然像基本html一样保存了我的输出html:

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

回答:

尝试使用selenium模拟您的浏览器。该脚本将弹出save

as网页对话框。您仍然需要弄清楚如何模拟按Enter键开始下载,因为文件对话框超出了硒的范围(您的操作方式也取决于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()

我也认为遵循 @Amber的

建议来获取链接的资源可能更简单,因此是更好的解决方案。不过,我认为使用硒是一个不错的起点,因为它br.page_source将使您了解整个dom以及javascript生成的动态内容。

以上是 如何使用Python保存“完整网页”而不仅仅是基本html 的全部内容, 来源链接: utcz.com/qa/412230.html

回到顶部