2013-03-02 99 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