2013-03-02 75 views
0

我试图打开多个HTML文档。每个站点的URL看起来是这样的:如何向URL添加参数?

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

AL是阿拉巴马州,但它由状态改变。我可以使用所有的两个字母组合state=('aa'..'zz').to_a创建一个数组,但是我怎样才能输入这个参数为AL以上?

我希望它拉起HTML文档的所有两个字母的组合,并从那里我可以使用条件来淘汰那些我不想要的。但我应该如何去插入两个字母组合?

+0

通过'HTTP:// www.website.com /信息/状态= AL'你的意思是通过'http://www.website.com/info/状态= AL'? (注意表示[查询字符串](http://en.wikipedia.org/wiki/Query_string)开头的'?')。 – adamdunson 2013-03-02 03:08:25

+0

这与Nokogiri无关。这是基本的网址字符串操作。另外,Nokogiri不开放任何东西; File或OpenURI通常用于打开某些内容。最后,有50个州,[加上一些](http://en.wikipedia.org/wiki/Protectorate#Un​​ited_States),与676个'aa..zz'组合相比。你是否真的希望查看676个不同的可能组合,或者建立一个所有实际状态的列表加上一些? – 2013-03-02 03:21:04

+0

是的,它有?在国家之前,我应该怎么做?和是这将是一个有点乏味为您提供全方位的组合表示,此前我创建的列表将我单独去和设置文档(DOC =引入nokogiri :: HTML(开放(“blahblahblah”)),它LL解析每个输出我想要的,或者是有一个更简单的方法,我不会有加50+“文档”。 – user2125715 2013-03-02 03:39:05

回答

1

Ruby的URI类是有用的。这不是功能最全的包处理的URL在那里 - 退房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 

哪个输出相同的东西。

+0

非常感谢,couldn”没有要求更好的答案。 – user2125715 2013-03-02 15:44:25