# Quick question

**URL:** <https://www.ruby-forum.com/t/quick-question/92484>\
**Category:** Ruby\
**Created:** [April 19, 2007, 11:06pm UTC](https://www.ruby-forum.com/t/quick-question/92484 "2007-04-19T23:06:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [April 19, 2007, 11:06pm UTC](https://www.ruby-forum.com/t/quick-question/92484/1 "2007-04-19T23:06:05Z")

</div>

Hi,

Is there any way to remotely extract a page source with Ruby from a  
website that uses session data?

Thank you,

W

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [April 19, 2007, 11:39pm UTC](https://www.ruby-forum.com/t/quick-question/92484/2 "2007-04-19T23:39:08Z")

</div>

wintermute wrote:

> Hi,
> 
> Is there any way to remotely extract a page source with Ruby from a  
> website that uses session data?  
> Mechanize probably does what you’re looking for.

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [April 19, 2007, 11:53pm UTC](https://www.ruby-forum.com/t/quick-question/92484/3 "2007-04-19T23:53:09Z")

</div>

You can do it with plain old net http that comes with Ruby, though it  
would take a couple of lines and require more work.

If you’re using windows, the easiest way would be watir:

#literally  
require ‘watir’  
@ie=Watir::IE.start(“[http://whatever/website/your/getting/source/from](http://whatever/website/your/getting/source/from)”)  
puts @ie.html

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [April 20, 2007, 12:07am UTC](https://www.ruby-forum.com/t/quick-question/92484/4 "2007-04-20T00:07:11Z")

</div>

Hum. Got me thinking, it’s been awhile since I’ve used Net::HTTP, I  
may have misspoken

So watir to html file  
#only problem is it leaves an ie window hanging around, but it IS tiny  
🙂  
require ‘watir’  
File.open(“/yea.html”,“w”){|f|  
f.write(Watir::IE.start(“[http://news.google.com](http://news.google.com)”).html)}

Net::HTTP to html file  
#just as small, easy and clean!  
require ‘net/http’  
File.open(“/yea.html”,“w”){|f|  
f.write(Net::HTTP.get(“[news.google.com](http://news.google.com)”,“/index.html”))}

Now the complexity comes when you want to navigate from page to page.  
With Watir you do things like  
@ie=Watir::IE.start(blah)  
@ie.link(:text,/tofu/).click  
Easy! And there is also firewatir which is a workalike for firefox  
(haven’t tried it myself)

NetHTTP is a bit more involved, but quite doable, and you don’t need  
windows or a gui or anything. Sadly I can’t find the code I wrote  
using it awhile ago.  
Still lookie here, it’s useful.  
[http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html](http://www.ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html)

---

<div class="post-metadata">

**Author:** ![wintermute](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/e19b73/32.png) [@wintermute](https://www.ruby-forum.com/u/wintermute)\
**Post date:** [April 20, 2007, 3:20pm UTC](https://www.ruby-forum.com/t/quick-question/92484/5 "2007-04-20T15:20:56Z")

</div>

Thank you both. Exactly what I needed.
