0

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

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

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

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

4

1 回答 1

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

输出相同的东西。

于 2013-03-02T04:54:03.457 回答