【Python】通过Python备份itpub博客

最近在学习python语言,今天练习了一下如何利用Python备份itpub博客

1,备份一篇博客
  1. 以http://blog.itpub.net/29096438/viewspace-1982636/这篇博客为例
  2. 查看源码可以看到标题部分的源码为
  3. <a href<a ="/29096438/viewspace-1982636/">【Python】python练习 

  4. 我们主要是想提取出中间红色色部分的URL,然后找到这篇文章的正文进行分析,然后提取进行下载。首先,假

    设已经得到这个字符串,然后研究如何提取这个URL,观察发现,对于所有的这类字符串,都有一个共同点,那
    就是都含有子串'<a 'href="</a 'href=/29096438",那么我们可以用最笨的方式---查找子串进行定界。

    1. # -*- coding: cp936 -*-
    2. import re
    3. import urllib2
    4. str = 'http://blog.itpub.net/29096438/viewspace-1982636/">【Python】python练习'   ---自己手工补全网址,源码里面的href不全

    5. fname=re.match('(.*)',str)
    6. fname2=fname.group(1)+'.html'
    7. print fname2

    8. start = str.find(r'href=')
    9. start += 6
    10. end = str.find('viewspace')
    11. end += 17
    12. url = str[start : end]
    13. print url


    14. text=urllib2.urlopen(url).read()
    15. f=open(fname2,'w')
    16. f.write(text)
    17. f.close()
    运行代码发现博客已经备份下来了
  5. 代码被转义了


2 ,备份所有博客
  1. 首先进入目录列表查看源码
  2. 所有文章的URL都符合一个模式,除了文章id不一样,29096438就是我们的用户id吧,每个人都有个独特的id,29096438就是我的用户id
  3. <a href<a ="/29096438/viewspace-1981855/">【Mysql】sysbench基准测试工具 
  4. <a href<a ="/29096438/viewspace-1982636/">【Python】python练习


  1. 代码:

点击(此处)折叠或打开

  1. # -*- coding: cp936 -*-
  2. import re 
     import urllib2
     for page in range(1,input('how many page do you want down:')): ###这儿就是输入你希望下载的页数,输入你的总页数吧
         url='http://blog.itpub.net/29096438/abstract/%d/'% page        ####循环不同的页
         text = urllib2.urlopen(url).read()
         pattern = r'.*' 
         regex = re.compile(pattern) 
         urlList = re.findall(regex,text) ####通过正则表达式找到所有文章的href,此时的href是带上标题的
     
         for i in urlList:
             newi=re.sub('/29096438','http://blog.itpub.net/29096438',i).decode('utf-8') ###补全文章的href,,因为我们获取到的href是不全
    的,少了http://blog.itpub.net这一段,decode编码是为了解决乱码问题
             #print newi
     
             fname=re.match('(.*)',newi)
             fname2=fname.group(1)+'.html' ####获取文章的标题名
             #print fname2
     
     
             start = newi.find(r'href=') 
             start += 6
             end = newi.find('viewspace')
             end += 17
             url2 = newi[start : end]
             print url2                                ####去掉上面href中的标题 只获取href的网址部分
     
             try:
                text2 = urllib2.urlopen(url2).read()
                f = open(fname2,'w')  
                f.write(text2)  
                f.close()
             except Exception,e:
                print e
                pass

  3. 代码有转义,注意被转换部分


改进,用beautiful模块取出正文部分
         try:
          r=requests.get(url2)
          soup=bsp(r.content)
          cont=soup.find('div',{'class':'Blog_wz1'})
          f=open(fname2,'w')
          f.write(str(cont))
          f.close()
         except:
          pass



运行结果: 

点击(此处)折叠或打开

  1. how many page do you want down:12 ---我的文章总共12页,所以输了个12 
  2. <a href="http://blog.itpub.net/29096438/viewspace-1682206/">【Mysql】搭建mysql-cluster</a>
  3.  
  4. 【Mysql】搭建mysql-cluster.html
  5.  
  6. http://blog.itpub.net/29096438/viewspace-1682206
  7.  
  8. coercing to Unicode: need string or buffer, _sre.SRE_Match found
  9.  
  10. <a href="http://blog.itpub.net/29096438/viewspace-1982636/">【Python】python练习</a>
  11.  
  12. 【Python】python练习.html
  13.  
  14. http://blog.itpub.net/29096438/viewspace-1982636
  15.  
  16. coercing to Unicode: need string or buffer, _sre.SRE_Match found
  17.  
  18. <a href="http://blog.itpub.net/29096438/viewspace-1981855/">【Mysql】sysbench基准测试工具</a>
  19.  
  20. 【Mysql】sysbench基准测试工具.html
  21.  
  22. http://blog.itpub.net/29096438/viewspace-1981855
  23.  
  24. coercing to Unicode: need string or buffer, _sre.SRE_Match found
  25.  
  26. <a href="http://blog.itpub.net/29096438/viewspace-1981811/">【Mysql】MySQL查询计划key_len全知道</a>
  27.  
  28. 【Mysql】MySQL查询计划key_len全知道.html
  29.  
  30. http://blog.itpub.net/29096438/viewspace-1981811
  31.  
  32. coercing to Unicode: need string or buffer, _sre.SRE_Match found
  33.  
  34. <a href="http://blog.itpub.net/29096438/viewspace-1980112/">【Pyrhon】Python在自动化运维时经常会用到的方法</a>
  35.  
  36. 【Pyrhon】Python在自动化运维时经常会用到的方法.html
  37.  
  38. http://blog.itpub.net/29096438/viewspace-1980112
  39.  
  40. coercing to Unicode: need string or buffer, _sre.SRE_Match found
  41.  
  42. <a href="http://blog.itpub.net/29096438/viewspace-1979572/">【Python】Python连接mysql</a>... 
  43. .... 
  44. .... 
  45. ...


可以看到下载的结果

<a href="(.*.html)" ',data)="" 代码还有一些bug需要完善的地方,但是能做到基本的备份博客的功能了(仅自己可见的不能备份),我找了些备份博客的工具都不能备份itpub的博客,如果你们有好的备份工具希望在下面告诉我一声!3Q


付代码连接
http://pan.baidu.com/s/1eRMIxhw
<a href="(.*.html)" ',data)=""

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-1983945/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29096438/viewspace-1983945/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值