:将html另存为文本

2024-04-27 16:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个javascript代码,它只显示html页面的源代码

javascript:h=document.getElementsByTagName('html')[0].innerHTML;function%20disp(h){h=h.replace(/</g,%20'\n&lt;');h=h.replace(/>/g,'&gt;');document.getElementsByTagName('body')[0].innerHTML='<pre>&lt;html&gt;'+h.replace(/(\n|\r)+/g,'\n')+'&lt;/html&gt;</pre>';}void(disp(h));

我在firefox中将代码保存为书签。所以在加载网页之后,当我从书签中选择代码时,它会显示源代码。

现在我尝试使用python保存html文件。

from BeautifulSoup import BeautifulSoup
from BeautifulSoup import BeautifulStoneSoup
import BeautifulSoup

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen("http://www.doctorisin.net/")
soup = BeautifulSoup(page)
print soup.prettify()
fp = open('file.txt','wb')
fp.write(soup.prettify())

但它没有javascript代码所具有的所有内容。保存的文件与javascript显示的源文件不同。也许python代码并不能从html页面获得所有的代码(javascript/css标记代码)。怎么了?我做错什么了吗?需要帮助

谢谢你

已编辑

例如,http://phpjunkyard.com/tutorials/cut-paste-code.php(随机站点)转到此站点,右键单击并选择view page source(firefox)复制源并保存在文本文件中。现在保存页面(将页面另存为)。你可以看到两者不一样。保存的页面(另存为)还有其他内容。Python提供类似于源代码的输出(查看页面源代码)。它缺少一些脚本、表单等


Tags: 代码fromimportltgt源代码htmlpage
2条回答

如果要保存web服务器提供的确切HTML,请不要使用BeautifulSoup(这是一个HTML解析器,在预打印时可能会修改代码);这将是一个更好的解决方案:

import urllib2
file("my_file.txt", "w").write(urllib2.urlopen("http://www.doctorisin.net/").read())

默认情况下,Firefox不仅保存HTML,还保存显示页面所需的文件(包括css和脚本)。

你看到的是静态网页和动态网页的区别。

与静态网页不同,动态网页可以在加载时修改底层html。Javascript可以转储加载页面的完整html,因为它可以访问浏览器创建的修改后的DOM。

相反,如果同一个网页从服务器下载并直接馈送到BeautifulSoup,它将只能将其解析为静态html。要获得完整的、动态的内容,首先需要由浏览器(或等效的浏览器)处理页面。

相关问题 更多 >