打开URL以从命令行使用ruby解析DOI

时间:2013-07-29 21:41:26

标签: ruby url doi

基于this我试图使用ruby将一个DOI(文档对象标识符)发送到crossref.org,它应该返回书目信息,从WinXP中运行Ruby 1.9.3的命令行进行以下调用-p194:

c:\Ruby193\bin\ruby.exe < rtest.txt

文件rtest.txt包含

open("http://dx.doi.org/10.1038/nrd842","Accept" => "text/bibliography; style=bibtex"){|f| f.each {|line| print line}}

相反,它不会走得太远并返回以下内容:

 -:1:in `initialize': Invalid argument - http://dx.doi.org/10.1038/nrd842 (Errno::EINVAL)
        from -:1:in `open' 
        from -:1:in `<main>' 

我可以调用ruby来执行其他任务,例如删除文件(喘气)。我想知道那可能是错误的原因。

1 个答案:

答案 0 :(得分:1)

似乎你必须首先要求像“open-uri”这样的库,如下例所示:

david@archbox:~$ irb
irb(main):001:0> require 'open-uri'
=> true
irb(main):002:0> open("http://dx.doi.org/10.1038/nrd842","Accept" =>"text/bibliography; style=bibtex"){|f| f.each {|line| print line}}
@article{Atkins_Gershell_2002, title={From the analysts couch: Selective anticancer drugs}, volume={1}, url={http://dx.doi.org/10.1038/nrd842}, DOI={10.1038/nrd842}, number={7}, journal={Nature Reviews Drug Discovery}, publisher={Nature Publishing Group}, author={Atkins, Joshua H. and Gershell, Leland J.}, year={2002}, month={Jul}, pages={491-492}}=> #<StringIO:0x95cf914 @base_uri=#<URI::HTTP:0x95cfcd4 URL:http://data.crossref.org/10.1038%2Fnrd842>, @meta={"date"=>"Mon, 29 Jul 2013 22:54:09 GMT", "server"=>"Apache/2.2.3 (CentOS)", "x-powered-by"=>"Phusion Passenger (mod_rails/mod_rack) 3.0.7", "vary"=>"Accept", "access-control-allow-origin"=>"*", "x-content-type-options"=>"nosniff", "content-length"=>"351", "status"=>"200", "connection"=>"close", "content-type"=>"text/bibliography;charset=utf-8"}, @status=["200", "OK"]>

创建一个文件来保存您的代码,也许是rtest.rb,在此文件中粘贴以下代码:

require 'open-uri'
open("http://dx.doi.org/10.1038/nrd842","Accept" =>"text/bibliography; style=bibtex"){|f| f.each {|line| print line}}

保存文件,然后运行:

ruby rtest.rb
相关问题