下载51cto《Linux运维趋势》所有pdf

  1. #!/usr/bin/env python 
  2. # coding=utf8 
  3. # Filename: down_51cto_ops_pdf.py 
  4. # Last modified: 2013-04-18 11:22 
  5. # Author: itnihao 
  6. # Mail: itnihao@qq.com 
  7.  
  8. ''''' 
  9. =========即将下载51cto《Linux运维趋势》所有pdf========= 
  10. 当前目录下创建51cto_ops_pdf文件夹,下载后的文件保存于此 
  11. ''' 
  12. import os,urllib2, re 
  13. #pdf下载地址 
  14. URL =  "http://os.51cto.com/down/?dir=linuxops" 
  15.  
  16. #判断51cto_ops_pdf文件是否存在 
  17. if not os.path.isdir('51cto_ops_pdf'): 
  18.     print "51cto_ops_pdf dirctory is missed, it will be created" 
  19.     os.mkdir('51cto_ops_pdf'
  20.     os.chdir('51cto_ops_pdf'
  21. else
  22.     os.chdir('51cto_ops_pdf'
  23.  
  24. s=  urllib2.urlopen(URL).read() 
  25. pat =  re.compile(r'http://.+?.pdf"'
  26. urls=  re.findall(pat,s) 
  27. print __doc__ 
  28. for i in urls: 
  29.      url =  i.replace('"',  ''
  30.      #页面抓取的url为http://os.51cto.com/downlinuxops/51cto_linuxops_issue23.pdf 
  31.      #实际下载地址h为http://os.51cto.com/down/linuxops/51cto_linuxops_issue23.pdf 
  32.      url =  url.replace('downlinuxops''down/linuxops'
  33.      #获取文件名 
  34.      pdf_name =  os.path.basename(url) 
  35.      #下载保存文件 
  36.      if not os.path.isfile(pdf_name): 
  37.          try
  38.              conn= urllib2.urlopen(url) 
  39.              data = conn.read() 
  40.              print "downloading"  +  url + "*"*24 
  41.              with open(pdf_name,'wb') as pdf: 
  42.                  pdf.write(data) 
  43.          except
  44.              print url,"url error" 

加执行权限运行即可(运行测试环境是linux,windows环境没测试)

下载完成如下,如已经下载完成,则不会重复下载