前些年头的blog被和谐后,一直觉得备份博客文章到本地还是相当有必要的。最近看python,此语言给人一种powerful 的感觉。于是兴头之下便来了几句。此代码只是针对csdn博客。方法有点呆板。其实最好是有1个可变的可迭代集合来存放url,python里有人写了优先队列,这是以后要改进的,现在先放一个朴素版本。另外一个用rss来获取url的,但是rss只是收录了更新的博客,老的没有,不知道什么原因,在这就不贴了。
- importurllib2,sys,re,os
- defsavefile(filename,content,method='wb'):
- op=open(filename,method)
- op.write(content)
- op.close()
- return1
- defSaveUrl(url):
- globalurls
- urls[url]=1
- c=urllib2.urlopen(url)
- content=c.read()
- iflen(url.split('/'))>5:
- dirs=("%s/backup/%s/%s"%('.',url.split('/')[-4],url.split('/')[-3]))
- ifnotos.path.exists(dirs):
- os.makedirs(dirs)
- savefile("%s/%s"%(dirs,url.split('/')[-1].replace('aspx','html')),content)
- print'saveurl',url
- urlres=re.compile("http:\/\/blog.youkuaiyun.com\/lwj1396\/archive\/[^\">\s\']+aspx")
- needtoaddurls=urlres.findall(content)
- foriteminneedtoaddurls:
- ifitemnotinurls.keys():
- urls.setdefault(item,0)
- print'add',url
- defBackup():
- globalurls
- i=10000
- whilei>0:
- forurlinurls:
- ifurls[url]==0:
- SaveUrl(url)
- break
- i=i-1
- if__name__=='__main__':
- urls={}
- urls.setdefault(r'http://blog.youkuaiyun.com/lwj1396',0)
- Backup()