我正在尝试打开多个 HTML 文档。每个站点的 URL 如下所示:
http://www.website.com/info/state=AL
AL
是阿拉巴马州,但因州而异。我可以创建一个包含所有两个字母组合的数组state=('aa'..'zz').to_a
,但是如何将其输入到AL
上面的参数中?
我希望它为所有两个字母组合提取 HTML 文档,然后我可以使用条件来清除我不想要的那些。但是我应该如何插入这两个字母组合呢?
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
输出相同的东西。