如何向URL添加参数?

时间:2013-03-02 02:42:03

标签: ruby url

我正在尝试打开多个HTML文档。每个站点的URL如下所示:

http://www.website.com/info/state=AL

AL是阿拉巴马州,但它会因州而改变。我可以创建一个包含所有两个字母组合state=('aa'..'zz').to_a的数组,但是如何将其输入到AL以上的参数中?

我希望它能够为所有两个字母组合提取HTML文档,并且从那里我可以使用条件来清除我不想要的那些。但是我应该如何插入两个字母组合呢?

1 个答案:

答案 0 :(得分:1)

Ruby的URI类非常有用。它不是用于处理网址的功能最全的软件包 - 如果您需要更多信息,请查看Addressable::URI,但这很好:

require 'uri'

uri = URI.parse('http://www.website.com/info')
{
  'Alabama'    => 'AL',
  'Alaska'     => 'AK',
  'Arizona'    => 'AZ',
  'Arkansas'   => 'AR',
  'California' => 'CA',
}.each_pair do |k, v| 
  uri.query = URI.encode_www_form( {'state' => v} )
  puts uri.to_s
end

哪个输出:

http://www.website.com/info?state=AL
http://www.website.com/info?state=AK
http://www.website.com/info?state=AZ
http://www.website.com/info?state=AR
http://www.website.com/info?state=CA

或者:

%w[AL AK AZ AR CA].each do |s| 
  uri.query = URI.encode_www_form( {'state' => s} )
  puts uri.to_s
end

哪个输出相同的东西。