返回列表 发帖

[问题求助] Python如何下载整个网页,包括image,js,css等?

如何下载整个网页,不只是单个html文件,还包括image,js,css等,就像用浏览器按Ctrl+S一样。
试了第三方wget和python的urllib.urlopen(),都只能得到html,网上说模拟浏览器什么的,就不太懂了。。。
多谢出手相助。。。

更新:需要登陆才能获取完整信息,有没有什么办法能把浏览器已经打开的页面批量保存下来?

本帖最后由 QIAOXINGXING 于 2014-5-16 20:57 编辑

回复 2# Batcher


    谢谢!
有些信息要登陆才能看到,之前搞过登陆,貌似很麻烦。。。有没有什么方法能把浏览器已经打开的页面保存下来??

TOP

Google搜索网站整站下载器
DAIC 发表于 2014-5-16 20:58



    谢了!
试了httrack-3.48.8、超级网站整站下载器 v2.0 破解绿色版、Teleport Ultra,前两个不支持登陆,Teleport 输了密码用户名也没用。

TOP

本帖最后由 QIAOXINGXING 于 2014-5-17 16:34 编辑

下载html,同时把img、css、js下载下来,有很多问题,先就这样吧。。。。
参考链接:http://stackoverflow.com/questio ... r/13855315#13855315

对于登陆,用IE登陆网站,再用IEC 获取html页面。。
#!/usr/bin/python
#coding:utf-8
from HTMLParser import HTMLParser
import urllib,os
import sys
reload(sys)
sys.setdefaultencoding('gbk')
class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.links =  []
def handle_starttag(self, tag, attrs):
# print "Encountered the beginning of a %s tag" % tag
if tag == 'img' or tag == "script":
for (variable, value)  in attrs:
if variable == "src" or variable == "href":
self.links.append(value)
if tag == "link":
dic = dict(attrs)
if dic['rel']=="stylesheet":
self.links.append(dic['href'])
def download(pagename,html_code,durl,links):
if not os.path.exists(pagename+'_files\\'):
os.mkdir(pagename+'_files\\')
upurl = durl.rsplit('/',1)[0]
for link in links:
fname = link.split('/')[-1]
fname = fname.split('?')[0]
localpath = './%s%s' % (pagename+'_files/',fname)
if link[0:3] == '../':
downlink = link[3:]
durl = upurl
else:
downlink = link
try:
urllib.urlretrieve(durl+'/'+downlink,localpath)
except Exception,error:
print 'download error:' , error
else:
print 'download '+fname
html_code = html_code.replace(link,localpath)
open(pagename+'.html','w').write(html_code)
return True
if __name__ == "__main__":
url = 'http://www.bathome.net/thread-30173-1-1.html'
pagename = 'bathome'
html_code = urllib.urlopen(url).read()
hp = MyHTMLParser()
hp.feed(html_code)
hp.close()
durl = url.rsplit('/',1)[0]
download(pagename,html_code,durl,hp.links)COPY

TOP

返回列表