需要构建一个url并使用返回的结果

时间:2011-06-06 13:56:11

标签: ruby http-post

我想从一个小脚本开始,从我们university website获取我和我的朋友的考试成绩。

我想将卷号作为post参数传递给它并使用返回的数据, 我不知道如何创建帖子字符串。

如果有人可以告诉我从哪里开始,有什么东西可以学习,教程的链接将会非常受欢迎。

我不希望有人为我编写代码,只是指导如何开始。

3 个答案:

答案 0 :(得分:1)

您可以查看net / http库,它包含在标准库中。有关详细信息,请参阅http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/index.html,该页面上有一些示例可帮助您入门。

答案 1 :(得分:1)

一种非常简单的方法是使用open-uri库并将查询参数放在URL查询字符串中:

require 'open-uri'
name = 'nikhil'
results = open("http://www.nitt.edu/prm/ShowResult.html?&param=#{name}").read

results现在包含从网址获取的正文文本。

如果您正在寻找更具野心的东西,请查看net/httphttparty宝石。

答案 2 :(得分:1)

我在这里写了一个解决方案,作为你可能提出的任何参考。有多种方法可以攻击它。

#fetch_scores.rb

require 'open-uri'

#define a constant named URL so if the results URL changes we don't
#need to replace a hardcoded URL everywhere.
URL = "http://www.nitt.edu/prm/ShowResult.html?&param="

#checking the count of arguments passed to the script.
#it is only taking one, so let's show the user how to use
#the script
if ARGV.length != 1
  puts "Usage: fetch_scores.rb student_name"
else
  name = ARGV[0] #could drop the ARGV length check and add a default using ||
  # or   name = ARGV[0] || nikhil
  results = open(URL + name).read
end

您可以检查NokogiriHpricot以更好地解析/格式化结果。 Ruby是一种“隐式返回”语言,所以如果你碰巧想知道为什么我们没有返回语句,因为自上次执行以来脚本将返回结果。