# Using Mechanize and hpricot to get property taxes

**URL:** <https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957>\
**Category:** Ruby\
**Created:** [May 18, 2008, 10:15pm UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957 "2008-05-18T22:15:00Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 18, 2008, 10:15pm UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/1 "2008-05-18T22:15:00Z")

</div>

after reading about hpricot, mechanize and htree gems, I made an attempt  
to write a simple code to grab property tax info for homes in Los  
Angeles. i wrote this fragment which goes to the assessor’s website,  
finds the form entries and correctly puts in an apn number (property  
parcel number) but fails at the submit line. I tried page =  
agent.submit(form) also to no avail. What am I doing wrong?

Two side questions: How do you auto-indent ruby code? I am using SciTe  
editor and i find myself using my old matlab editor every once in a  
while to beautify the codes. Hw could ruby not have auto-indentor?  
Also quick way of turning an html table into a matrix, array of arrays?  
thanks in advance.

require ‘rubygems’  
require ‘hpricot’  
require ‘mechanize’  
agent = WWW::Mechanize.new  
apn=‘2264-011-027’  
page =  
agent.get(‘[https://ttc.lacounty.gov/secured\_asp/vcheck\_new/index.php](https://ttc.lacounty.gov/secured_asp/vcheck_new/index.php)’)  
form=page.forms.with.name(“pageform”).first  
form[‘mapbook’]=apn[0,4]  
form.page=apn[5,3]  
form.parcel=apn[9,3]  
page = agent.submit(form,form.buttons.first) #gives error

error:

c:/ruby/lib/ruby/gems/1.8/gems/mechanize-0.7.6/lib/www/mechanize/page.rb:104:in  
`bases': undefined method `search’ for nil:NilClass (NoMethodError)  
from  
c:/ruby/lib/ruby/gems/1.8/gems/mechanize-0.7.6/lib/www/mechanize.rb:440:in  
`to_absolute_uri' from c:/ruby/lib/ruby/gems/1.8/gems/mechanize-0.7.6/lib/www/mechanize.rb:659:in `fetch\_page’  
from  
c:/ruby/lib/ruby/gems/1.8/gems/mechanize-0.7.6/lib/www/mechanize.rb:466:in  
`post_form' from c:/ruby/lib/ruby/gems/1.8/gems/mechanize-0.7.6/lib/www/mechanize.rb:269:in `submit’

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 12:41am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/2 "2008-05-19T00:41:06Z")

</div>

On 18 Mai, 22:15, Cy Gar [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Also quick way of turning an html table into a matrix, array of arrays?  
> form[‘mapbook’]=apn[0,4]  
> `to\_absolute\_uri’  
> Posted viahttp://www.ruby-forum.com/.  
> Just pasted it into irb. I don’t run into errors…

> > page = agent.submit(form,form.buttons.first)  
> > =\> #\<WWW::Mechanize::Page  
> > {url  
> > #\<URI::HTTPS:0xfdbb0484c URL:[https://ttc.lacounty.gov/secured\_asp/](https://ttc.lacounty.gov/secured_asp/)  
> > vcheck\_new/index.php?  
> > page=installments&SSID=3an61rbfpbje0uunii667oj706\>}  
> > {meta}  
> > {title “Property Tax Payment Status Page”}  
> > {iframes}  
> > {frames}  
> > {links  
> > #\<WWW::Mechanize::Link  
> > “Select Another Parcel”  
> > “index.php?page=main&SSID=3an61rbfpbje0uunii667oj706”\>  
> > #\<WWW::Mechanize::Link  
> > "\r\n \r\n "  
> > “index.php?page=main&SSID=3an61rbfpbje0uunii667oj706”\>}  
> > {forms}\>

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 12:45am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/3 "2008-05-19T00:45:48Z")

</div>

Cy Gar wrote:

> after reading about hpricot, mechanize and htree gems, I made an attempt  
> to write a simple code to grab property tax info for homes in Los  
> Angeles. i wrote this fragment which goes to the assessor’s website,  
> finds the form entries and correctly puts in an apn number (property  
> parcel number) but fails at the submit line. I tried page =  
> agent.submit(form) also to no avail. What am I doing wrong?
> 
> Two side questions: How do you auto-indent ruby code? I am using SciTe  
> editor and i find myself using my old matlab editor every once in a  
> while to beautify the codes.

With Scite once you name the file name.rb or select Ruby from the  
language tab it should automatically handle the indentations.

Hw could ruby not have auto-indentor?

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 12:56am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/4 "2008-05-19T00:56:27Z")

</div>

By auto-indent, i meant indenting an entire chunk of the code not indent  
after each return hit. thanks! In matlab medit, you can highlite the  
entire code block and use cntrl-I to indent the entire section… In  
unix, cb is run to beautify c code.

Michael W. Ryder wrote:

> With Scite once you name the file name.rb or select Ruby from the  
> language tab it should automatically handle the indentations.

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 1:15am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/5 "2008-05-19T01:15:16Z")

</div>

Hey Thanks! But what the heck? I just reinstalled ruby gems, hpricot and  
mechanize and still got the same error?? running from sciTe.

unknown wrote:

> Just pasted it into irb. I don’t run into errors…

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 1:37am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/6 "2008-05-19T01:37:09Z")

</div>

I tried it using fxri and i think the output you’re showing is for first  
agent.get call:  
page =  
agent.get(‘[https://ttc.lacounty.gov/secured\_asp/vcheck\_new/index.php](https://ttc.lacounty.gov/secured_asp/vcheck_new/index.php)’)

not the submit line. I still get an error on that line.

unknown wrote:

> Just pasted it into irb. I don’t run into errors…
> 
> > > page = agent.submit(form,form.buttons.first)  
> > > =\> #\<WWW::Mechanize::Page  
> > > {url  
> > > #\<URI::HTTPS:0xfdbb0484c URL:[https://ttc.lacounty.gov/secured\_asp/](https://ttc.lacounty.gov/secured_asp/)  
> > > vcheck\_new/index.php?  
> > > page=installments&SSID=3an61rbfpbje0uunii667oj706\>}  
> > > {meta}  
> > > {title “Property Tax Payment Status Page”}  
> > > {iframes}  
> > > {frames}

---

<div class="post-metadata">

**Author:** ![goodcy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/8dc957/32.png) [@goodcy](https://www.ruby-forum.com/u/goodcy)\
**Post date:** [May 19, 2008, 1:36am UTC](https://www.ruby-forum.com/t/using-mechanize-and-hpricot-to-get-property-taxes/137957/7 "2008-05-19T01:36:43Z")

</div>

On Sun, May 18, 2008 at 6:56 PM, Cy Gar [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> By auto-indent, i meant indenting an entire chunk of the code not indent  
> after each return hit. thanks! In matlab medit, you can highlite the  
> entire code block and use cntrl-I to indent the entire section… In  
> unix, cb is run to beautify c code.

I know that Emacs, Netbeans, and TextMate all do this for Ruby code.  
I’m sure other editors do as well.

–  
Avdi

Home: [http://avdi.org](http://avdi.org)  
Developer Blog: [Avdi Grimm, Code Cleric](http://avdi.org/devblog/)  
Twitter: [http://twitter.com/avdi](http://twitter.com/avdi)  
Journal: [http://avdi.livejournal.com](http://avdi.livejournal.com)
