标题: [问题求助] Python如何下载整个网页,包括image,js,css等? [打印本页]
作者: QIAOXINGXING 时间: 2014-5-16 17:58 标题: Python如何下载整个网页,包括image,js,css等?
如何下载整个网页,不只是单个html文件,还包括image,js,css等,就像用浏览器按Ctrl+S一样。
试了第三方wget和python的urllib.urlopen(),都只能得到html,网上说模拟浏览器什么的,就不太懂了。。。
多谢出手相助。。。
更新:需要登陆才能获取完整信息,有没有什么办法能把浏览器已经打开的页面批量保存下来?
作者: Batcher 时间: 2014-5-16 20:23
http://bbs.bathome.net/thread-29456-1-1.html
作者: QIAOXINGXING 时间: 2014-5-16 20:53
本帖最后由 QIAOXINGXING 于 2014-5-16 20:57 编辑
回复 2# Batcher
谢谢!
有些信息要登陆才能看到,之前搞过登陆,貌似很麻烦。。。有没有什么方法能把浏览器已经打开的页面保存下来??
作者: DAIC 时间: 2014-5-16 20:58
Google搜索网站整站下载器
作者: QIAOXINGXING 时间: 2014-5-16 23:33
Google搜索网站整站下载器
DAIC 发表于 2014-5-16 20:58
谢了!
试了httrack-3.48.8、超级网站整站下载器 v2.0 破解绿色版、Teleport Ultra,前两个不支持登陆,Teleport 输了密码用户名也没用。
作者: QIAOXINGXING 时间: 2014-5-17 16:21
本帖最后由 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)
复制代码
作者: hlzj88 时间: 2014-5-17 23:27
回复 5# QIAOXINGXING
看到你发言 超级网站整站下载器2.0 ,我一直用1.,29,特地下载了2.0,明显感觉不如1.29,要不你试试看
作者: 523066680 时间: 2014-8-8 20:44
本帖最后由 523066680 于 2014-8-8 20:46 编辑
发了一个Perl登录论坛的,供参考
bbs.bathome.net/viewthread.php?tid=31338
作者: 秋风·飞扬 时间: 2014-9-6 22:55
回复 1# QIAOXINGXING wget以及python都是需要多次申请才可以的,第一次爬网页,然后正则,然后下载js,img,css,python用urllib2(短连接可以),正则之后再次提交请求,img,js,css直接用os包解析后缀,然后将流导入到相应文件。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |