ai didi

python - 如何使用 Python 保存 "complete webpage"而不仅仅是基本的 html

转载 作者:IT老高 更新时间:2023-10-28 20:54:19 24 4
gpt4 key购买 nike

我正在使用以下代码使用 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 保存为没有 javascript、图像等的基本 html。我想将网页保存为完整的(就像我们在浏览器中有选项一样)

更新:我现在使用以下代码来保存 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 以开始下载,因为文件对话框超出了 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 的建议来获取链接的资源可能更简单,因此是更好的解决方案。不过,我认为使用 selenium 是一个很好的起点,因为 br.page_source 将为您提供整个 dom 以及 javascript 生成的动态内容。

关于python - 如何使用 Python 保存 "complete webpage"而不仅仅是基本的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516590/

24 4 0
文章推荐: java - 来自十六进制代码的 Apache POI XSSFColor
文章推荐: java - Java 和 Android 中 Calendar 类的不同行为
文章推荐: 显示 Java 邮件发件人的地址而不是他的姓名
文章推荐: java - 通过子字符串解析后如何回收内存?实习生()还是新字符串()?
IT老高
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com