欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用ruby备份你的blog

程序员文章站 2022-03-11 09:45:32
...
 虽然sohu不大可能倒闭,但是我也想导出我所有的文章,备份在自己的数据库中。javaeye的blog系统提供了一个blog导入导出的功能,用起来很酷。其实你自己用ruby写一下也很简单,比如我要读取我的blog的RSS源:
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson require 
'rss/2.0'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson require 
'open-uri'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson url 
= 'http://dennnis-zane.blog.sohu.com/rss'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson feed 
= RSS::Parser.parse(open(url).read, false
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson puts 
"=== blog名称: #{feed.channel.title} ===" 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson feed.items.each 
do |item| 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson     puts item.title 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson     puts 
" (#{item.link})"
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson     puts puts item.description 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson end 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson 

feed.items对应rss2.0的item元素,每个item元素描述了一篇文章的标题,链接,内容等信息,你可以通过item.title,item.link等来读取,并存入你自己的数据库。

再给一个使用代理的例子,因为我的机子是使用代理上网的:

使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson require 'rss/2.0'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson require 
'net/http'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson url 
= 'http://dennnis-zane.blog.sohu.com/rss'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson $proxy_addr 
= '172.16.51.10'
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson $proxy_port 
= 807
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson 
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson response 
= Net::HTTP.Proxy($proxy_addr, $proxy_port).get_response(URI.parse("http://dennnis-zane.blog.sohu.com/rss"))
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson feed 
= RSS::Parser.parse(response.body, false)
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson puts 
"=== Channel: #{Iconv.conv('GBK','UTF-8',feed.channel.title)} ==="
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson feed.items.each 
do |item|
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson   puts Iconv.conv(
'GBK','UTF-8',item.title)
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson   puts 
" (#{item.link})"
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson   puts
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson  # puts Iconv.conv(
'GBK','UTF-8',item.description)
使用ruby备份你的blog
            
    
    博客分类: ruby & rails BlogRubyHTMLWebspherejson end


打印:

=== Channel: 花非花 ===
websphere错误备忘录
 (http://dennnis-zane.blog.sohu.com/29898836.html)

感冒,寒冷的夜
 (http://dennnis-zane.blog.sohu.com/29859082.html)

ECMAScript对象基础
 (http://dennnis-zane.blog.sohu.com/29499101.html)

用ruby创建领域特定语言(DSL)——转载
 (http://dennnis-zane.blog.sohu.com/29350052.html)

使用ruby解析json
 (http://dennnis-zane.blog.sohu.com/29200192.html)

ruby实现抽象类和抽象方法
 (http://dennnis-zane.blog.sohu.com/29145303.html)

看了《父子》,看了《绿帽子》
 (http://dennnis-zane.blog.sohu.com/29047444.html)

ECMAScript基础
 (http://dennnis-zane.blog.sohu.com/28876856.html)

假期结束,专心工作
 (http://dennnis-zane.blog.sohu.com/28604494.html)

不解
 (http://dennnis-zane.blog.sohu.com/27564529.html)