`
RednaxelaFX
  • 浏览: 3052769 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

JavaEye博客备份脚本订制版

阅读更多
今天Robbin如何批量导出JavaEye的博客做备份?提供了一份Ruby写的备份JavaEye博客文章的脚本。原理如原帖所述,是通过Google Reader原先已经抓取好的RSS来获取博客文章内容。
在Windows上使用该脚本有三个要留意的地方:
1、一大群在JavaEye上活动的同学们都是用简体中文Windows,默认编码是GBK,直接运行该脚本会遇到编码问题;
2、Windows上路径中不允许出现 \ / : * ? " < > | 等字符,该脚本没有做相应转义。
3、Ruby 1.9里FileUtils#makedirs变成返回数组了

于是刚才在简体中文Windows XP、Ruby 1.9.1-p378上跑该脚本来备份博客前,稍微对脚本做了些修改,顺便发出来。脚本文件保存为UTF-8编码。
#!/usr/bin/env ruby
# encoding: UTF-8

%w(cgi iconv open-uri openssl fileutils rexml/document).each {|lib| require lib }

# String#mgsub taken from Ruby Cookbook, Recipe 1.18
class String
  def mgsub(key_value_pairs = [].freeze)
    regexp_fragments = key_value_pairs.collect {|k,v| k }
    gsub(Regexp.union(*regexp_fragments)) do |match|
      key_value_pairs.detect {|k,v| k =~ match}[1]
    end
  end
end

class GReader
	TEMPLATE = <<-HTML
		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
		<html xmlns="http://www.w3.org/1999/xhtml">
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
				<title>_title_</title>
			</head>
			<body>
				_body_
			</body>
		</html>
	HTML

	def initialize(options = {})
    @g_sid = get_sid options[:g_name], options[:g_pwd]
    @blog_rss = "http://#{options[:domain]}/rss"
    @header = {
      "UserAgent" => "JavaEye Blog Backup Script", 
      "Cookie" => "SID=#@g_sid",
      :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE
    }
    @reader_path = "https://www.google.com/reader/atom/feed/#{CGI.escape @blog_rss}?n=44444"
    Dir.chdir FileUtils.makedirs(options[:dir] ||= options[:domain]).first
  end

  def fetch
    puts "Downloading..."
    open(@reader_path, @header) do |response|
      REXML::Document.new(response).elements.each("*/entry") do |entry|
        begin
          title = entry.elements["title"].text.mgsub([
          	[%r{\\}, '\'], [%r{/}, '/'],
          	[/:/, ':'],    [/\*/, '*'],
          	[/\?/, '?'],   [/"/, '“'],
          	[/</, '<'],    [/>/, '>'],
          	[/\|/, '|']
          ])
          link = entry.elements["link"].attributes['href']
          body = (entry.elements["summary"] || entry.elements["content"]).text.sub(/<span style="color:red">\s*<a.*style="color:red">((已有 <strong>\d+<\/strong> 人发表留言,猛击-&gt;&gt;<strong>这里<\/strong>&lt;&lt;-参与讨论)|(本文的讨论也很精彩,浏览讨论&gt;&gt;)).*$/m, '')
          filename = RUBY_PLATFORM =~ /mswin/i ? Iconv.conv("GB18030", "UTF-8", "#{title}.html") : "#{title}.html"
          File.open(filename, "w") do |f| 
            f.puts "<h3><a href=#{link} title='原文链接'>#{title}</a></h3>"
            f.puts TEMPLATE.sub('_title_', title).sub('_body_', body) 
          end
          puts "[Save]	#{filename}"
        rescue Exception => e
          puts "[Error] #{e.message}"
          next
        end
      end
    end
    puts "All files have been saved in #{Dir.pwd}"
  rescue Exception => e
    puts "[Error]	#{e.message}"
  end

  def get_sid(g_name, g_pwd)
    puts "Login..."
    open("https://www.google.com/accounts/ClientLogin?Email=#{g_name}&Passwd=#{g_pwd}",
      :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE) {|res| res.string.lines.detect {|l| l =~ /^SID=/ }.strip.sub(/^SID=/,'') }
  rescue Exception => e
    puts "[Error]	login failed. #{e.message}"
    exit
  end
end

def args(key)
  ARGV.each_with_index do |arg, i|
    return ARGV[i+1] if "-#{key}" == arg
  end
  nil
end

if ARGV.size < 5 || args('u').nil? || args('p').nil? || ARGV.detect {|arg| '-h' == arg}
  DATA.each_line { |line| puts line if (line =~ /^Usage/)..(line =~ /china$/) }
  exit
end

GReader.new(:domain => ARGV.last,
  :dir => args('d'),
  :g_name => args('u'),
  :g_pwd => args('p')).fetch


__END__
Usage: ruby javaeye_blog_backup.rb OPTIONS your-javaeye-domain

your-javaeye-domain should be robbin.iteye.com if your javaeye blog is http://robbin.iteye.com

 OPTIONS
  -u  your google account
  -p  your google password
  -d  directory you'd love to save your blog files. OPTIONAL. default: your-javaeye-domain (eg. robbin.iteye.com)

Example
ruby javaeye_blog_backup.rb -u bitch -p fuckgfw cnnic.iteye.com

改了4处,
1、在开头出添加Ruby 1.9开始支持的encoding注释
2、给String加了个mgsub方法,一次替换多个正则表达式;mgsub取自Ruby Cookbook
3、Dir.chdir FileUtils.makedirs(options[:dir] ||= options[:domain])后面加上了.first
4、title = entry.elements["title"].text的后面加上了mgsub的调用,将前面提到的不能出现在Windows路径中的字符替换为对应的全角版;

顺带把一处对String的split("\n")换成用String#lines
另外是把最后的NOT REQUIRED换成了OPTIONAL,不过这个不影响程序运行,只是我的个人兴趣


成功备份了296个文件,泪 T.T
虽说296比侧边栏里显示的“全部博客 (334)”少了一些,主要是比较早期的帖没抓下来,不过……至少省下了非常多的人肉保存功夫。

感谢Robbin的脚本~

引用
Login...
Downloading...
[Save] 答复: Java获得泛型类型.html
[Save] 终于是并购了…….html
[Save] 乱同步…….html
[Save] 关于反射调用方法的一个log.html
[Save] 降序循环总是比升序循环快?.html
[Save] 动态加载的时候一个小细节.html
[Save] [草泥马语] ws2gmh之正则版.html
[Save] Array.Copy().html
[Save] JavaEye短信的乐趣.html
[Save] 碰到jBPM的编码问题了 T T.html
[Save] To囧:拿你来测测Watir....html
[Save] 小试rubyzip的一个脚本.html
[Save] 把Mechanize的html_parser改回到Hpricot.html
[Save] 虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩.html
[Save] [标题党] 跑得好好的C#程序咋移植为Java就不够内存用了呢?——忽悠一把.html
[Save] 答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二).html
[Save] 答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比.html
[Save] 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比.html
[Save] SRE里的Builder系列到Info系列的转换.html
[Save] 反射还真会挂…….html
[Save] 订阅的feed…….html
[Save] bison的运算符优先级一例.html
[Save] 在Windows上使用Wilson.html
[Save] 10月预计会看的动画列表.html
[Save] C# attribute和Java annotation…….html
[Save] 随便一记,“引用类型”.html
[Save] 委托与方法和隐藏参数.html
[Save] 静态变量的初始化,你是否真的需要lazy?.html
[Save] 要让CLR挂掉的话(第二弹)…….html
[Save] Java中enum的静态成员的初始化.html
[Save] 要让CLR挂掉的话…….html
[Save] 趣味编程:函数式链表的快速排序.html
[Save] 趣味编程:函数式链表的快速排序.html
[Save] 第一次看到HotSpot挂在JIT线程上…….html
[Save] 把lock的意思给弄混了 T T.html
[Save] 合并MSN聊天记录的脚本(探索中).html
[Save] 基情约会…….html
[Save] 简单易懂的现代魔法……原来是C++啊.html
[Save] beef.html
[Save] 运行时对代码操纵的一个小demo(二).html
[Save] 运行时对代码操纵的一个小demo.html
[Save] 去Sun开发者技术日2009逛了.html
[Save] 提出结论,给出论据(二).html
[Save] 提出结论,给出论据(一).html
[Save] 内部类的用法都还给书本了 = =.html
[Save] Scott Peterson: Variance, Thy Name is Ambiguity.html
[Save] 杂记3:实际编译出来的strlen().html
[Save] 杂记1:缓存,局部性,循环.html
[Save] 并行赋值会调用to_ary.html
[Save] 把列表里连续的数字合并到连续范围里.html
[Save] [纯水]FireFox/Namoroka是想把JavaScript引擎怎么搞?.html
[Save] 为什么JVM与CLR都不对接口方法调用做静态校验?.html
[Save] CLR上的接口调用也是在运行时检查的.html
[Save] JVM在校验阶段不检查接口的实现状况.html
[Save] 一个新的电子小说制作引擎,「らのべえ」.html
[Save] .NET Framework 4 Beta 1与对应的IronPython 2.6的下载.html
[Save] 反射与显式实现接口的方法.html
[Save] .NET Framework 4.0 Beta 1里的Expression Tree一例.html
[Save] Visual Studio 2010 Beta 1的安装和初试(截图×20).html
[Save] 看到一个关于ref参数与多态的问题,记一下.html
[Save] 用Iron-*语言来探索.NET.html
[Save] 当年Richard Stallman对.NET的评论.html
[Save] 以Python为例讨论高级编程语言程序的wire format与校验.html
[Save] Python 2.6.2的.pyc文件格式.html
[Save] Python 2.6.2的字节码指令集一览.html
[Save] Python字节码,改啊改啊改.html
[Save] C#的+=运算符两例.html
[Save] 数组协变带来的静态类型漏洞.html
[Save] 一个通不过Java字节码校验的例子.html
[Save] Ruby方法名简写的trick……(外加方法名缩写的trick).html
[Save] delete NULL会怎样?.html
[Save] Common Compiler Infrastructure(CCI)开源了!.html
[Save] 自己关于VM的帖的目录.html
[Save] 关于||=与变量定义.html
[Save] Visual Studio 2010的新语言,Sentient DSLs.html
[Save] Nullable的诡异之处…….html
[Save] MIX09上关于DLR解释器消息的一段听记(3月26更新IronPython 2.6A1消息).html
[Save] 答复: C# 4 DLR  &amp; Java 7 Invokedynamic.html
[Save] Eric说It's not magic.html
[Save] Unity 2.5发布,包括Windows版本.html
[Save] 搞怪语言——Starry语言简介.html
[Save] LINQ的恶搞…….html
[Save] [链接] 可以在Python里用的parsing library.html
[Save] 避免重复代码——know your library(续).html
[Save] 没专门语法支持的语言里用monad好难看.html
[Save] 算区间内质数。好慢啊 T T.html
[Save] 上周某公司的笔试题.html
[Save] YARV和JIT,还有JRuby…….html
[Save] 在Ruby 1.9.1/Windows 7上用mechanize遭遇segfault.html
[Save] 通过get或set方法的MethodInfo获得相应的PropertyInfo的方式.html
[Save] 简单DAG生成算法的一个性质.html
[Save] 在XP上配置PXE服务来给同一网络内的机器安装Windows 7.html
[Save] [整理] 通过U盘来安装Windows 7的办法.html
[Save] 渴望新驱动的老硬件用户们.html
[Save] 把FireFox转义了的文件名转回来…….html
[Save] 同一个ParameterExpression被用在不同嵌套层次的lambda里会怎样?.html
[Save] 数组……Geez,我总是弄混.html
[Save] 一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2.html
[Save] MRI 1.8.6的irb里一个小诡异的地方(以为是IronRuby rev183的bug).html
[Save] 一个简单的语言的语法(二):ANTLR的重写规则.html
[Save] 一个简单的语言的语法(一):用ANTLR描述语法.html
[Save] 将Comiket物的文件名格式统一化的脚本(F#版).html
[Save] 将Comiket物的文件名格式统一化的脚本.html
[Save] 在Canvas上根据变量改变Shape的位置?.html
[Save] 消除一个IPv4地址中每段的前导0.html
[Save] 迷思:运行时有没有办法消除这样的冗余?.html
[Save] 向后兼容性与老化.html
[Save] 现在桌上的书堆.html
[Save] [求助] 想求一个数列的通项没求出来.html
[Save] IronPython 2.0正式版发布了.html
[Save] 见《java字符串解析》,联想.html
[Save] CodePlex上放出DLR v0.9 beta.html
[Save] 随便玩了下Intellipad,贴张图.html
[Save] Objective-J?.html
[Save] C# 4的方法动态分法逻辑变了…….html
[Save] 方法分发(method dispatch)的几个例子.html
[Save] DLR即将在Codelex开设独立的站点.html
[Save] 装上VS2010 CTP,随便记点什么.html
[Save] JRuby开始尝试使用Rubinius的内核,Rubinius正式转用C++ VM.html
[Save] Visual Studio 2010及C# 4.0的预览版资源链接.html
[Save] PDC 2008开幕.html
[Save] FGAB问题——C#的语法二义性.html
[Save] struct bit-field与little-endian.html
[Save] IronPython放出RC1.html
[Save] 今天微软开放了WPF的参考源代码(081026更新).html
[Save] 新的DLR tree改变了Visitor的设计.html
[Save] 在WinXP上构造V8.html
[Save] 目前DLR执行一棵DLR tree的过程(针对10月3日的ChangeSet 41087).html
[Save] Mono 2.0正式发布了.html
[Save] this的寿命?.html
[Save] LINQ与DLR的Expression tree(5):用lambda表达式表示常见控制结构.html
[Save] SqueakNOS?看看能做出什么成果.html
[Save] LINQ与DLR的Expression tree(4):创建静态类型的LINQ表达式树节点.html
[Save] LINQ与DLR的Expression tree(3):LINQ与DLR及另外两个库的AST对比.html
[Save] .NET的类型层次查看工具,ClassHierarchyViewer,0.3.0.1.html
[Save] 不要通过enumerator来改变集合的内容.html
[Save] 稍微修改过的Mono.Cecil.html
[Save] Cosmos,又一个C#写的操作系统(库).html
[Save] 类型的可见性,System.Reflection与Mono.Cecil的差异.html
[Save] 关于对象与闭包的关系的一个有趣小故事.html
[Save] Webkit的SquirrelFish Extreme.html
[Save] 吉里吉里2 2.30版正式发布了.html
[Save] LINQ与DLR的Expression tree(2):简介DLR.html
[Save] Mono的一个新的有趣的项目:CsharpRepl.html
[Save] C#中的generator不会被立即执行…….html
[Save] LINQ与DLR的Expression tree(1):简介LINQ与Expression tree.html
[Save] 带StringBuilder参数的ToString()重载?.html
[Save] 简记V8与SquirrleFish/Tamarin的对比点.html
[Save] Google发布Chrome浏览器.html
[Save] Visual Studio 2008的黑色主题,Dark Theme + Consolas字体.html
[Save] 在U盘上运行SharpDevelop.html
[Save] 看了关于VS2008/.NET 3.5 SP1的录像,做笔记.html
[Save] Visual Studio 2008 SP1以及.NET Framework 3.5 SP1发布了.html
[Save] sizeof运算符与副作用.html
[Save] 搬到新宿舍了.html
[Save] [链接] 只使用了符号的Ruby程序——rrencode.html
[Save] SmallLan编译器(前端)GUI demo.html
[Save] [雷] 总之这个先拿去……生成的部分我吃不下了 T T.html
[Save] 批量重命名的两个脚本.html
[Save] Quartett!文本插入程序.html
[Save] Rhino 1.7与Java集成的一个小例子.html
[Save] [链接] 现在就用ECMAScript 4来写JavaScript应用.html
[Save] [链接] 用JavaScript来运行Java.html
[Save] C# 3.0的自动生成的属性.html
[Save] Ruby/JRuby里定义类时指定基类的一个问题.html
[Save] JRuby的类重定义……为什么不行?.html
[Save] String#unpack对应的UTF-8是怎么回事?.html
[Save] Ruby 1.8.x中复合赋值运算符的实现.html
[Save] 读到一篇关于运行效率的小测试的文章,也做了一样的测试来看看.html
[Save] 吐槽:可怜、可恶、可悲,NetBeans。.html
[Save] 微软发布Open XML Format SDK 1.0.html
[Save] 批量更新SVN版本库的脚本.html
[Save] 默认参数与闭包的组合.html
[Save] [网页游戏] SilverRain.html
[Save] 在简体中文XP下构建SSCLI 2.0的注意点.html
[Save] 表示MSVC的版本的宏_MSC_VER.html
[Save] DB2 pureXML应用比赛.html
[Save] nop对程序语义的影响.html
[Save] AS3, optional type annotation, and strict mode.html
[Save] Adobe的ActionScript 3编译器对strict mode中的类型标注的诠释.html
[Save] 发现rb++ / rbgccxml.html
[Save] .NET考试的一些题目.html
[Save] IronRuby in Action一书进入EAP.html
[Save] 一个生成伪log的程序…….html
[Save] 切分字符串,然后把数组逆序的小脚本.html
[Save] 确定性析构在有指针的环境下的麻烦之处.html
[Save] typename关键字的使用.html
[Save] 针对Change Set 32648而更新的荒井省三的简单DLR语言例子.html
[Save] LanguageProvider跑哪里去了?.html
[Save] 原来C#里配合Nullable类型还有个??运算符…….html
[Save] 怪哉,这VS的sln文件怎么…….html
[Save] 使用Dictionary保存数据的功能在引擎里的内部实现.html
[Save] 编译crowbar 0.4.02.html
[Save] 写占位符时用的词…….html
[Save] 复制TreeView里的内容?.html
[Save] 函数/方法的局部作用域与for的作用域问题.html
[Save] finally子语里的return...险恶啊.html
[Save] 又是宏……do..while(0)的用法.html
[Save] [转帖] 用C# Generator解决Hanoi塔问题.html
[Save] ういんどみる公开了它用的游戏引擎,CatSystem2.html
[Save] [Phalanx] Visual Studio 2008的一些源码格式化配置.html
[Save] MiniJava的语法.html
[Save] 关于变量,作用域与闭包;也再讨论一下C++0x的lambda表达式(预演……).html
[Save] 火星了,今天才知道C++0x也通过了lambda表达式/闭包的提案.html
[Save] 《七色★星露》 汉化补丁1.0 NSIS脚本.html
[Save] 使用lambda expression来动态获取delegate,然后用Cecil注入代码(1).html
[Save] 一个简单的计算器——使用System.CodeDom来生成代码.html
[Save] 避免重复代码——know your library.html
[Save] [链接] 关于Java 6 update 10的一篇文章.html
[Save] 关于Mono.Cecil与System.Reflection的一篇文章.html
[Save] 不能对Iterator使用for-each循环…….html
[Save] 那啥……穷举实现的24点(rev1).html
[Save] 那啥……穷举实现的24点.html
[Save] 对Strategy与Template Method模式的区别的一些讨论.html
[Save] BattleMoonWars 归档解压/压缩程序 (Java).html
[Save] ケータイ少女 script.arc的解压缩程序 (Java).html
[Save] 桃華月憚体験版的解压缩程序 (Java).html
[Save] Visual C++ 2008 Feature Pack发布了.html
[Save] C#中只接受数字输入的控件.html
[Save] [无内容] lexeme与token的对应关系…….html
[Save] 今天买到本好书.html
[Save] C#与Ruby 1.8在作用域与闭包上的比较.html
[Save] 将ANTLR生成的.tokens文件重格式化(C#版).html
[Save] 将ANTLR生成的.tokens文件重格式化(C++版).html
[Save] 某人的作业,A档第五题.html
[Save] 某人的作业,A档第一题.html
[Save] 将ANTLR生成的.tokens文件重格式化(Ruby版)-20080329更新.html
[Save] 跟语法搏斗…….html
[Save] JavaScript的“this“.html
[Save] [吐槽] 微软的DreamSpark.html
[Save] 微软准备开放OOXML SDK.html
[Save] 垃圾回收与弱引用.html
[Save] .NET的一些可用的profiler.html
[Save] 几种排序算法的性能的统计图.html
[Save] StringCollection? ArrayList? HashSet?——BCL里一些容器的问题.html
[Save] [链接] 计算机程序的结构与解释课程录像.html
[Save] [链接] 一篇把DSL用于建模的文章.html
[Save] 昨天重装系统了…….html
[Save] [自用] 下载用链接.html
[Save] [茶] 那个文本校验工具,ver0.1.html
[Save] JavaScript中使用正则表达式的一点笔记(未完).html
[Save] Square Enix在“小规模开发”中使用Squirrel作为脚本语言.html
[Save] Scheme非完整笔记.html
[Save] Quartett!的文本提取程序.html
[Save] 原来我们学院也开了trac.html
[Save] Android…又摸出来玩了下。.html
[Save] Flex 3正式发布了 (2008-02-25).html
[Save] Fortune Arterial Tools.html
[Save] REST资料链接.html
[Save] Squirrel 2.2发布了.html
[Save] 《计算机算法——设计与分析导论》 边读边记.html
[Save] 程序设计语言概论 课程相关杂记.html
[Save] SVN repository里的.svn目录的删除.html
[Save] ECMAScript 4的一些引用资料/杂记.html
[Save] 吉里吉里2相关的一些引用资料.html
[Save] KJS的一些简略笔记.html
[Save] 几个链接和杂记。有待进一步阅读。.html
[Save] Pajama社的引擎……到底叫啥名字?.html
[Save] FORTUNE ATERIAL script record.html
[Save] さくらシュトラッセ literal record.html
[Save] 《更胜黎明前的琉璃色》简体中文汉化版安装包1.1 NSIS脚本.html
[Save] 吉里吉里2 2.28 rev3发布.html
[Save] 消除网站/论坛防拷贝的字的脚本.html
[Save] [考试] 2007年度上学期 计算系统基础(B卷上机).html
[Save] [考试] 2007年度上学期 计算系统基础(A卷上机).html
[Save] [笔记] 关于KAG3中宏参数的类型.html
[Save] [吐槽] 好吧,我郁闷了。转入控件大战。.html
[Save] [链接] 除法优化与编译时常量参数的函数调用优化.html
[Save] Borland的库的一个小特征?.html
[Save] 吉里吉里3观察记录(2008-01-05 3523).html
[Save] [资料] Visual Studio2005的快捷键.html
[Save] 一些获取当前日期的方法.html
[Save] BURIKO股份有限公司成立.html
[Save] [无内容] XHTML里的script标记兼容性.html
[Save] [脚本分析] 从Quartett!的脚本得到资源列表.html
[Save] [脚本分析] Quartett!的二进制脚本分析.html
[Save] [开发日志] 尝试在NetOA中使用Flex 2,并利用Web Service与后台的ASP.NET交互.html
[Save] [工具][转载] ExtractData 1.08更新.html
[Save] [共享] SampleWebSite (2007/12/28更新).html
[Save] [开发日志][071214] 完善用例分析,开始建立页面原型.html
[Save] [开发日志] 搭建架构原型,画用例图.html
[Save] [开发日志] 架构设计初步介绍.html
[Save] [记录] 使用工具 (慢慢更新).html
[Save] [开发日志]试用PowerDesigner 12,进行业务分析与BPM图制作.html
[Save] [练习题] 用泰勒展式计算自然对数e的幂.html
[Save] [开发日志] 终于部署上了FlexWiki.html
[Save] 装了VS2005 SP1,测了些原来测的东西.html
[Save] 实训项目 - NetOA [071204].html
[Save] [无内容] SPL - System Programming Language.html
[Save] 刚才遇见了LV.html
[Save] [自用笔记] 简单数据与简单WinForm控件的数据绑定初探.html
[Save] 在IE里,选定页面上的单词查询在线词霸的快捷方式.html
[Save] [无聊扔作业系列](二)一个简单的XML浏览/编辑器.html
[Save] 解决了个小问题,爽.html
[Save] 笔记本中毒了....html
[Save] 接触Script.NET.html
[Save] 一些抱怨…….html
All files have been saved in D:/JavaEye_backup/rednaxelafx.iteye.com


[Save] Array.Copy().html << 话说这个是应该不存在的帖……结果也没保存下来。
[Save] 杂记3:实际编译出来的strlen().html << 这个同上,都是发错了删除掉了的帖。想不到也给GR备份住了……orz

更新:在回复中得wolfplanet的提示:
wolfplanet 写道
另外OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 是非常bitch的

在1.9里可以给open-uri一个参数
:ssl_verify_mode=>mode

将那个对常量的赋值换成了用:ssl_verify_mode=>mode。参考文档:
http://ruby-doc.org/ruby-1.9/classes/OpenURI/OpenRead.html
分享到:
评论
12 楼 RednaxelaFX 2010-05-01  
yexin218 写道
我想问一个问题,为什么要登入google账户啊?

因为这个脚本是通过Google Reader来抓取它收录的RSS feed的。不登录Google账户就无法从Google Reader获取这些信息。
11 楼 yexin218 2010-05-01  
我想问一个问题,为什么要登入google账户啊?
10 楼 siemens800 2010-04-04  
E:\>ruby --version
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]
E:\>ruby javaeye_blog_backup.rb -u abcd.efgh -p 1234 lindows.iteye.com
Login...
[Error] login failed. getaddrinfo: 存储控制块被损坏。
E:\>


存储控制块被损坏?什么情况啊... 有人解释下呢?
9 楼 lwwin 2010-02-08  
RednaxelaFX 写道
lwwin 写道
好吧我小白了= =

看了一下用户名需要的是GMAIL的账户- -我想原因是因为我根本不懂怎么实现的关系|||

于是补上回复,求简单了解||| 深入或者编写就不需要了……

PS:可以下载任意的BLOG么^^?可有什么限制?

简单原理可以去阅读如何批量导出JavaEye的博客做备份?里“使用Google Reader来巧妙的实现JavaEye博客的批量导出备份”的那段。也就是说Google Reader事先就已经抓好需要的内容了,我们只要问Google Reader“要过来”就行。

这个基本原理自然可以应对多数有一定流量、有提供RSS/Atom feed的网站。不过上面的脚本里有些专门对于JavaEye博客文章的RSS输出的逻辑,所以不能直接用于抓任意博客的内容。


= = 需要改之前,那得先搞清楚一些RUBY基础了么= =||
也行,先收着好了^^ 谢FX~
8 楼 yuan 2010-02-07  
哈哈,我下载了99篇,把我的垃圾文章都找出来了……
7 楼 RednaxelaFX 2010-02-06  
lwwin 写道
好吧我小白了= =

看了一下用户名需要的是GMAIL的账户- -我想原因是因为我根本不懂怎么实现的关系|||

于是补上回复,求简单了解||| 深入或者编写就不需要了……

PS:可以下载任意的BLOG么^^?可有什么限制?

简单原理可以去阅读如何批量导出JavaEye的博客做备份?里“使用Google Reader来巧妙的实现JavaEye博客的批量导出备份”的那段。也就是说Google Reader事先就已经抓好需要的内容了,我们只要问Google Reader“要过来”就行。

这个基本原理自然可以应对多数有一定流量、有提供RSS/Atom feed的网站。不过上面的脚本里有些专门对于JavaEye博客文章的RSS输出的逻辑,所以不能直接用于抓任意博客的内容。
6 楼 lwwin 2010-02-06  
好吧我小白了= =

看了一下用户名需要的是GMAIL的账户- -我想原因是因为我根本不懂怎么实现的关系|||

于是补上回复,求简单了解||| 深入或者编写就不需要了……

PS:可以下载任意的BLOG么^^?可有什么限制?
5 楼 lwwin 2010-02-06  
需要用户名和密码^^??
4 楼 RednaxelaFX 2010-02-05  
wolfplanet 写道
windows真要命

无奈(摇头
不过好歹Ruby 1.9对多编码的支持友好了一些之后可以把原文件写成UTF-8的就少很多编码问题。
话说这才想起Ruby 1.9里也可以不直接用IConv了,直接用String#encode就好

wolfplanet 写道
另外OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 是非常bitch的

在1.9里可以给open-uri一个参数
:ssl_verify_mode=>mode

嗯受教了~这个修改也整合到脚本里去了。多谢~~
3 楼 robbin 2010-02-05  
哈哈,还是群众的力量大
2 楼 wolfplanet 2010-02-05  
另外OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 是非常bitch的

在1.9里可以给open-uri一个参数
:ssl_verify_mode=>mode
1 楼 wolfplanet 2010-02-05  
windows真要命

相关推荐

    博客备份工具

    博客备份 可以解析备份博客的文章标题,文章类别,发表时间,文章正文,原文地址共五项内容。支持断点续传备份,支持增量备份,只备份最新博文。 多线程多用户 真正多线程博客下载备份,可以同时下载多个不同网站...

    javaeye被黑

    javaeye被黑 大家看看

    JavaEye博文JavaEye博文JavaEye博文

    "JavaEye博文" 本资源摘要信息来自JavaEye博文,作者cutesunshineriver,发布于2010年。该博文涵盖了软件开发、编程、项目管理等多方面的知识点。 在本博文中,我们可以看到多个与软件开发相关的知识点,包括: 1...

    javaeye热点阅读

    5. Effective Java Second Edition中文版:该书是Java编程的经典之作,中文版的发布让更多的中国开发者能学习到最佳实践。 6. 国内开源工作流Fire Workflow:Fire Workflow是中国本土的开源工作流引擎,它的出现...

    http://yourgame.javaeye.com/blog/252853

    标题中的链接指向了一个JavaEye博客文章,但实际内容并未提供,不过从标签“源码”和“工具”我们可以推测这篇文章可能涉及的是与编程、软件开发或特定工具相关的源代码分析。描述中的链接则指向了InfoQ网站上的一篇...

    javaeye的信息提示框代码之js

    javaeye的信息提示框代码之css,application.js

    JavaEye+技术架构

    JavaEye+技术架构,讲述java框架的应用

    JavaEye3.0开发手记

    ### JavaEye3.0开发手记之开发环境搭建详解 #### 一、开发环境搭建概述 随着JavaEye3.0开发计划的启动,本篇文章将详细介绍如何为该项目搭建高效的开发环境。开发过程中不仅需要考虑软件的选择,还需要针对操作...

    JavaEye新闻月刊_-_2009年3月_-_总第13期

    JavaEye新闻月刊2009年3月第13期内容涉及了当时软件开发领域内的一系列重要话题,包括IBM拟收购Sun Microsystems公司的新闻报道、Java社区对此的看法以及各种编程语言、开发工具和技术的新动态。 首先,新闻月刊...

    javaeye api [java httpclient版] 简单封装

    JavaEye API 的简单封装主要基于 Java 的 HttpClient 库,提供了更方便、易用的接口来执行 HTTP 请求。HttpClient 是一个成熟的 Java 库,用于执行 HTTP 协议的客户端请求,而 JavaEyeClient 则是对这个库进行了一层...

    javaeye论坛小测试答案

    javaeye 论坛小测试 javaeye论坛小测试答案 javaeye论坛测试答案 这下你们就省事了。

    JavaEye Client SourceCode

    JavaEye Client SourceCode是一个开源项目,专为Android平台设计,提供了JavaEYE的客户端实现。这个项目的源代码为我们提供了一个深入了解Android应用开发以及Java编程在移动设备上的实践的宝贵资源。接下来,我们将...

    javaeye代码高亮插件

    在WordPress等博客平台中,为了使代码段在文章中清晰易读,通常会使用代码高亮插件。JavaEye的代码高亮插件以其简洁、高效而受到许多开发者的青睐。然而,当你试图在WordPress中寻找与JavaEye类似的代码高亮插件时,...

    javaeye月刊2008年4月 总第2期.pdf

    【JavaEye月刊2008年4月总第2期】主要涵盖了多个与Java相关的技术和行业动态。以下是对这些内容的详细解析: 1. **Spring创始人Rod Johnson再次发飙—“传统Java应用服务器正在没落”** Rod Johnson是Spring框架的...

    测试JavaEye的PDF生成效果

    标题“测试JavaEye的PDF生成效果”提示我们关注的是一个使用JavaEye库生成PDF文档的实践过程。JavaEye可能是一个用于Java平台的开源库,它提供了将数据转换为PDF格式的功能,这对于创建报告、手册或其他需要打印或...

Global site tag (gtag.js) - Google Analytics