当前位置: 首页 > 面试题库 >

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

易品
2023-03-14
问题内容

我正在使用以下代码使用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生成的动态内容。



 类似资料:
  • 问题内容: 有什么方法可以使用WebDriver保存完整的网页吗? 当前,我执行getPageSource(),然后将所有内容放入html本地文件中,但是保存的页面的形状不好(奇怪的字符,没有图像,所有元素向下偏移) 请参阅以下我使用的代码: 有人可以建议我使用WebDriver在Firefox中保存完整网页的方法吗?例如自动? 问题答案: 奇怪的字符可能与写入文件的编码有关。 其他问题可能与以下

  • 问题内容: 目前,我有一个只能下载给定页面的脚本。 现在我想 下载网页中的所有文件 ,包括,,和 图像文件 (同我们得到任何网站的CTRL-S)。 我当前的代码是: 我访问了许多问题,但它们都只下载了。 问题答案: 以下实现使您能够获取HTML子网站。为了获得您需要的其他文件,可以对其进行更完善的开发。我为您设置了变量,以设置要解析的最大sub_websites。 Python3版本,2019年。

  • 问题内容: 我正在尝试使用Java在数据库中设置时间戳,但是在我的表中,我得到的只是日期,而没有时间(例如,看起来像“ 2010-09-09 00:00:00”)。 我使用我的mysql数据库中的日期时间字段(因为它似乎是日期时间是比较常见的比时间戳)。我设置日期的代码如下所示: 如何设置日期以包括时间? 编辑: 我按照下面的方法更改了代码,它同时设置了日期和时间。 问题答案: 使用和。仅限日期,

  • 问题内容: 我为python 2.7使用了selenium网络驱动程序: 启动浏览器:。 转到一些网址:。 此时,如何向浏览器发送“另存为”命令? 注意:这不是我感兴趣的网页源。我想使用实际的“将页面另存为” Firefox命令来保存页面,该命令所产生的结果与保存网页源不同。 问题答案: 不幸的是,您无法使用Selenium做您想做的事。您可以使用page_source来获取html,但这就是您将

  • 我有这样一个html元素: 我想按文本行找到一个表格,然后单击垃圾桶图标将其删除。 所以我的想法是循环行<代码> 我的理解是,驱动程序是整个页面 从第一行而不是第二行选择删除按钮。 我也试过了 但它也选择行。 只是为了确保我打印出了if条件下的行(,它打印出了第二行。 知道发生了什么或者我如何选择第二行中的吗?

  • 我真的需要帮助。 我试图在新机器上运行我的jsp应用程序,jetty给了我这个错误:org.apache.jasper.JasperException:pwc6345:调用javac时有一个错误。需要完整的JDK(而不仅仅是JRE 编辑:问题解决-这是月食月星错误-在月食开普勒,它正在工作