我有一个javascript代码,它只显示html页面的源代码
javascript:h=document.getElementsByTagName('html')[0].innerHTML;function%20disp(h){h=h.replace(/</g,%20'\n<');h=h.replace(/>/g,'>');document.getElementsByTagName('body')[0].innerHTML='<pre><html>'+h.replace(/(\n|\r)+/g,'\n')+'</html></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提供类似于源代码的输出(查看页面源代码)。它缺少一些脚本、表单等
如果要保存web服务器提供的确切HTML,请不要使用
BeautifulSoup
(这是一个HTML解析器,在预打印时可能会修改代码);这将是一个更好的解决方案:默认情况下,Firefox不仅保存HTML,还保存显示页面所需的文件(包括css和脚本)。
你看到的是静态网页和动态网页的区别。
与静态网页不同,动态网页可以在加载时修改底层html。Javascript可以转储加载页面的完整html,因为它可以访问浏览器创建的修改后的DOM。
相反,如果同一个网页从服务器下载并直接馈送到
BeautifulSoup
,它将只能将其解析为静态html。要获得完整的、动态的内容,首先需要由浏览器(或等效的浏览器)处理页面。相关问题 更多 >
编程相关推荐