I am hitting a wall. This is my first attempt at ruby programming and I
am sure my code leaves a lot to be desired...be gentle.
I have a csv file I am loading into an array, it contains static pieces
of a url that i build other urls from.
It will loop through the first 10 in the array and always works. Number
11 always fails with:
C:/Ruby/lib/ruby/1.8/open-uri.rb:277:in `open_http': 414 Request-URI Too
Large (
OpenURI::HTTPError)
from C:/Ruby/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `catch'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:518:in `open'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:30:in `open'
So I shift my loop to start at 11 to the end and after the 10th time in
the loop it fails. Shift it again by 10, same thing. A total of 58 array
elements, csv file size is 44 KB. Rules out the data right?
Leads me to believe that I have a memory problem or maybe I need to
clear out the variable. The array data contains passwords and usernames
so I will sanitize them and upload if needed.
Here is the basic code.
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'csv'
fluffers = Array.new
urlA =
"http://mywebpage.com/fight.php?investor_id=67814104&action=status"
urlB = "http://mywebpage.com/bank.php?amount="
urlB2 = "&action=Deposit&do=Deposit"
urlH = "http://mywebpage.com/holy.php?cost=&action=Get%20personal"
urlS = "http://mywebpage.com/index.php?"
# Populate the array with the static information
CSV.open('z:/ruby/invest2.csv', 'r') do |row|
fluffers.push row
end
i = 0
until i == fluffers.length
doc = Hpricot(open(urlStatus << fluffers[i].to_s))
inMoney =
doc.search("//strong[@class='money']").inner_html.gsub(/\D/,'')
inHoly = (doc/"#current_holy").inner_html
inEnergy = (doc/"#current_energy").inner_html
inStock = (doc/"#current_stock").inner_html
if inMoney.to_i > 0
open(urlB + inMoney + urlB2 + fluffers[i].to_s)
print "deposit\n"
end
inStock.to_i.times do
if inHoly.to_i < 20
open(urlH + fluffers[i].to_s)
end
open(urlA + fluffers[i].to_s)
print "a\n"
doc = Hpricot(open(urlS << fluffers[i].to_s))
inHoly = (doc/"#current_holy").inner_html
print inHoly
end
i += 1
end
Thank You!
···
--
Posted via http://www.ruby-forum.com/.