Ruby循环作为变量或uri增量

时间:2014-07-28 19:37:10

标签: ruby loops

这是我的查询:

我有一个网址示例: http://www.abcde.com/dir/go.php?id=1

我对URI.parse使用“open-uri”,为请求使用URI.escape。

我想迭代网址,例如:

http://www.abcde.com/dir/go.php?id=1,2
http://www.abcde.com/dir/go.php?id=1,2,3
http://www.abcde.com/dir/go.php?id=1,2,3,4
http://www.abcde.com/dir/go.php?id=1,2,3,4,5

等。 对不起我的英语,从过去的3个小时开始尝试..

require 'open-uri'
tgt = "http://www.abce.com/dir/go.php?id=1' ORDER BY 1,2,3,4,5,6,7#"

response = URI.parse(URI.escape(#{tgt})).read
puts response

正如你所看到的,我已经知道我将在id = ORDER BY 1,2,3,4,5,6,7上得到不同的错误“

但是,我想迭代参数id = 1'ORDER BY 1,2,3,4,5,6,7,8,9,10 ..... so on .. 我很困惑如何增加值?

知道了。

require 'open-uri'
#require 'regexp'

trg = "http://www.abcde.com/dir/go.php?id=1' GROUP BY "
(1..10).each do |i|
uri = "#{trg} " +(1..i).to_a.join(",")
s = "#{uri}#"
res = URI.parse(URI.escape("#{s}")).read
puts res
end

2 个答案:

答案 0 :(得分:2)

不确定这是否是你想要的。

(1..5).each do |i|
  puts "http://www.abcde.com/dir/go.php?id=" +(1..i).to_a.join(",") 
end

你会得到:

http://www.abcde.com/dir/go.php?id=1
http://www.abcde.com/dir/go.php?id=1,2
http://www.abcde.com/dir/go.php?id=1,2,3
http://www.abcde.com/dir/go.php?id=1,2,3,4
http://www.abcde.com/dir/go.php?id=1,2,3,4,5

答案 1 :(得分:1)

如果您有要为其创建网址的特定数量的ID:

def url_with_ids(url, id_quantity)
  url << "?id=" << (1..id_quantity).to_a.join(",")
end

如果您想使用越来越多的ID继续使用相同的URL,您可以创建一个这样的循环:

url = "http://www.abcde.com/dir/go.php"
n = 1

while true
  current_url = url_with_ids(url, n)
  # do stuff with current_url
  n += 1
end

编辑:理想情况下,你会使用真实条件而不是while true,这样你就可以在完成目标后突破循环。