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 =
“mywebpage.com - This website is for sale! - mywebpage Resources and Information.”
urlB = “mywebpage.com - This website is for sale! - mywebpage Resources and Information.”
urlB2 = “&action=Deposit&do=Deposit”
urlH = “mywebpage.com - This website is for sale! - mywebpage Resources and Information.”
urlS = “mywebpage.com - This website is for sale! - mywebpage Resources and Information.”
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!