我使用以下代码使用 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模拟浏览器.此脚本将弹出网页的另存为对话框.您仍然必须弄清楚如何模拟按Enter键进行下载以开始,因为文件对话框不在硒的范围内(您的操作依赖于操作系统).
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生成的动态内容.
原文地址:https://www.jb51.cc/html/231012.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。