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