bsky
bsky

Reputation: 20222

Rails mechanize gem - scraping

I want to fill in some options which trigger the downloading of a file, using the Mechanize gem. The HTML is the following.

<div>
   <form action="" id="label_selectors" method="post">
     ...
     ...
       <div class="source form_options">                                    
              <select name="source" id="source">                                    
                <option value="btce" selected="selected">Btc-e</option>                                 
                <option value="cryptsy">Cryptsy</option>                                    
             <option value="796">796</option>                                   
                <option value="bitstamp">Bitstamp</option>                                  
                <option value="formulas">Altcoin Indexes</option>                                   
              </select>                                 
            </div>                                  
            <div class="label form_options">                                    
              <select name="label" id="label">                                  
              </select>                                 
            </div>                                  
            <div class="period form_options">                                   
          <select name="period" id="period">                                    
          <option value="15m">15 minute</option>                                    
          <option value="1h" selected="selected">1 hour</option>                                    
          <option value="1d">1 day</option>                                 
          </select>                                 
        </div>                                  
        <div class="presense form_options">                                 
          CSV: <input type="radio" name="presence" value="csv"> Chart: <input type="radio" name="presence" value="chart" checked="checked">                                 
        </div>                                  
        <div class="submit form_options">                                   
          <input type="submit" name="submit" value="OK">                                    
        </div>                                  
      </form>                                   
    </div>

I tried to do something like this:

form = page.forms.first  
form.source = "btce"   
form.label = "BTC/USD"
form.period = "1d"
form.presense = "csv"
form.submit

However, it doesn't work:

NoMethodError: undefined method `presense=' for #<Mechanize::Form:0x007fb878dc7f98

(the typo presense rather than presence appears in the page)

How could I fill in this form correctly?

Upvotes: 0

Views: 268

Answers (1)

Chris O&#39;Sullivan
Chris O&#39;Sullivan

Reputation: 1272

It looks like the presence input is a radio button.

To select a radio button with mechanize you'll want something like:

form.radiobuttons_with(name: 'presence')[0].check

There's other ways to select radio buttons with mechanize - you can see them here: http://docs.seattlerb.org/mechanize/GUIDE_rdoc.html

Upvotes: 1

Related Questions