使用ruby备份你的blog
程序员文章站
2022-03-10 19:16:39
...
虽然sohu不大可能倒闭,但是我也想导出我所有的文章,备份在自己的数据库中。javaeye的blog系统提供了一个blog导入导出的功能,用起来很酷。其实你自己用ruby写一下也很简单,比如我要读取我的blog的RSS源:
require 'rss/2.0'
require 'open-uri'
url = 'http://dennnis-zane.blog.sohu.com/rss'
feed = RSS::Parser.parse(open(url).read, false)
puts "=== blog名称: #{feed.channel.title} ==="
feed.items.each do |item|
puts item.title
puts " (#{item.link})"
puts puts item.description
end
feed.items对应rss2.0的item元素,每个item元素描述了一篇文章的标题,链接,内容等信息,你可以通过item.title,item.link等来读取,并存入你自己的数据库。
再给一个使用代理的例子,因为我的机子是使用代理上网的:
打印:
=== 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)
require 'rss/2.0'
require 'open-uri'
url = 'http://dennnis-zane.blog.sohu.com/rss'
feed = RSS::Parser.parse(open(url).read, false)
puts "=== blog名称: #{feed.channel.title} ==="
feed.items.each do |item|
puts item.title
puts " (#{item.link})"
puts puts item.description
end
feed.items对应rss2.0的item元素,每个item元素描述了一篇文章的标题,链接,内容等信息,你可以通过item.title,item.link等来读取,并存入你自己的数据库。
再给一个使用代理的例子,因为我的机子是使用代理上网的:
require 'rss/2.0'
require 'net/http'
url = 'http://dennnis-zane.blog.sohu.com/rss'
$proxy_addr = '172.16.51.10'
$proxy_port = 807
response = Net::HTTP.Proxy($proxy_addr, $proxy_port).get_response(URI.parse("http://dennnis-zane.blog.sohu.com/rss"))
feed = RSS::Parser.parse(response.body, false)
puts "=== Channel: #{Iconv.conv('GBK','UTF-8',feed.channel.title)} ==="
feed.items.each do |item|
puts Iconv.conv('GBK','UTF-8',item.title)
puts " (#{item.link})"
puts
# puts Iconv.conv('GBK','UTF-8',item.description)
end
require 'net/http'
url = 'http://dennnis-zane.blog.sohu.com/rss'
$proxy_addr = '172.16.51.10'
$proxy_port = 807
response = Net::HTTP.Proxy($proxy_addr, $proxy_port).get_response(URI.parse("http://dennnis-zane.blog.sohu.com/rss"))
feed = RSS::Parser.parse(response.body, false)
puts "=== Channel: #{Iconv.conv('GBK','UTF-8',feed.channel.title)} ==="
feed.items.each do |item|
puts Iconv.conv('GBK','UTF-8',item.title)
puts " (#{item.link})"
puts
# puts Iconv.conv('GBK','UTF-8',item.description)
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)