我希望能够下载HTML页面(让我们说出这个实际问题!):
f = urllib2.urlopen('https://stackoverflow.com/questions/33914277')
content = f.read() # soup = BeautifulSoup(content) could be useful?
g = open("mypage.html", 'w')
g.write(content)
g.close()
这样它在本地显示的方式与在线显示方式相同。目前这是(坏)结果:
因此,需要下载CSS,并修改HTML本身,使其指向此本地CSS文件......对于图像等也是如此。
如何做到这一点?(我认为应该比this answer简单,不能处理CSS,但是如何处理?库?)
答案 0 :(得分:0)
由于css和图片文件属于CORS政策,因此您可以在本地html中查看这些文件。问题是未解析的URI。在html head部分你有smth。像这样:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="/assets/8943fcf6/select.css" />
<link href="/css/media.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/assets/jquery.yii.js"></script>
<script type="text/javascript" src="/assets/select.js"></script>
</head>
显然/css/media.css
表示基地址,例如。 http://example.com
。要解析本地文件,您需要在本地html副本中将http://example.com/css/media.css
作为 href 值。所以现在你应该解析并将基数添加到本地代码中:
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" type="text/css" href="http://example.com/assets/select.css" />
<link href="http://example.com/css/media.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="http://example.com/assets/jquery.yii.js"></script>
<script type="text/javascript" src="http://example.com/assets/select.js"></script>
</head>
使用任何手段(js,php ...)
由于本地文件还包含图像&#39; body 部分中的参考资料,您也需要解决它们。