找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 46081|回复: 8

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

[复制链接]
发表于 2014-5-16 17:58:40 | 显示全部楼层 |阅读模式
如何下载整个网页,不只是单个html文件,还包括image,js,css等,就像用浏览器按Ctrl+S一样。
试了第三方wget和python的urllib.urlopen(),都只能得到html,网上说模拟浏览器什么的,就不太懂了。。。
多谢出手相助。。。

更新:需要登陆才能获取完整信息,有没有什么办法能把浏览器已经打开的页面批量保存下来?
发表于 2014-5-16 20:23:27 | 显示全部楼层
 楼主| 发表于 2014-5-16 20:53:18 | 显示全部楼层
本帖最后由 QIAOXINGXING 于 2014-5-16 20:57 编辑

回复 2# Batcher


    谢谢!
有些信息要登陆才能看到,之前搞过登陆,貌似很麻烦。。。有没有什么方法能把浏览器已经打开的页面保存下来??
发表于 2014-5-16 20:58:43 | 显示全部楼层
Google搜索网站整站下载器
 楼主| 发表于 2014-5-16 23:33:48 | 显示全部楼层
Google搜索网站整站下载器
DAIC 发表于 2014-5-16 20:58



    谢了!
试了httrack-3.48.8、超级网站整站下载器 v2.0 破解绿色版、Teleport Ultra,前两个不支持登陆,Teleport 输了密码用户名也没用。
 楼主| 发表于 2014-5-17 16:21:38 | 显示全部楼层
本帖最后由 QIAOXINGXING 于 2014-5-17 16:34 编辑

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

对于登陆,用IE登陆网站,再用IEC 获取html页面。。
  1. #!/usr/bin/python
  2. #coding:utf-8
  3. from HTMLParser import HTMLParser
  4. import urllib,os
  5. import sys
  6. reload(sys)
  7. sys.setdefaultencoding('gbk')

  8. class MyHTMLParser(HTMLParser):
  9.         def __init__(self):
  10.                 HTMLParser.__init__(self)
  11.                 self.links =  []
  12.         def handle_starttag(self, tag, attrs):
  13. #                print "Encountered the beginning of a %s tag" % tag
  14.                 if tag == 'img' or tag == "script":
  15.                         for (variable, value)  in attrs:
  16.                                 if variable == "src" or variable == "href":
  17.                                         self.links.append(value)
  18.                 if tag == "link":
  19.                         dic = dict(attrs)
  20.                         if dic['rel']=="stylesheet":
  21.                                 self.links.append(dic['href'])

  22. def download(pagename,html_code,durl,links):
  23.         if not os.path.exists(pagename+'_files\\'):
  24.                 os.mkdir(pagename+'_files\\')
  25.         upurl = durl.rsplit('/',1)[0]
  26.         for link in links:
  27.                 fname = link.split('/')[-1]
  28.                 fname = fname.split('?')[0]
  29.                 localpath = './%s%s' % (pagename+'_files/',fname)
  30.                 if link[0:3] == '../':
  31.                         downlink = link[3:]
  32.                         durl = upurl
  33.                 else:
  34.                         downlink = link

  35.                 try:
  36.                         urllib.urlretrieve(durl+'/'+downlink,localpath)
  37.                 except Exception,error:
  38.                         print 'download error:' , error
  39.                 else:
  40.                         print 'download '+fname
  41.                         html_code = html_code.replace(link,localpath)
  42.         open(pagename+'.html','w').write(html_code)
  43.         return True
  44. if __name__ == "__main__":
  45.         url = 'http://www.bathome.net/thread-30173-1-1.html'
  46.         pagename = 'bathome'

  47.         html_code = urllib.urlopen(url).read()
  48.         hp = MyHTMLParser()
  49.         hp.feed(html_code)
  50.         hp.close()
  51.         durl = url.rsplit('/',1)[0]
  52.         download(pagename,html_code,durl,hp.links)
复制代码
发表于 2014-5-17 23:27:35 | 显示全部楼层
回复 5# QIAOXINGXING
看到你发言 超级网站整站下载器2.0 ,我一直用1.,29,特地下载了2.0,明显感觉不如1.29,要不你试试看
发表于 2014-8-8 20:44:57 | 显示全部楼层
本帖最后由 523066680 于 2014-8-8 20:46 编辑

发了一个Perl登录论坛的,供参考
bbs.bathome.net/viewthread.php?tid=31338
发表于 2014-9-6 22:55:06 | 显示全部楼层
回复 1# QIAOXINGXING wget以及python都是需要多次申请才可以的,第一次爬网页,然后正则,然后下载js,img,css,python用urllib2(短连接可以),正则之后再次提交请求,img,js,css直接用os包解析后缀,然后将流导入到相应文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:09 , Processed in 0.020072 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表