2011-07-22 37 views
0

我是一位Ruby on Rails開發人員,他被要求編寫純Ruby腳本。腳本從stdin獲取輸入並導航到網站並返回輸出

的目標是:

  1. 採取用戶輸入使用標準輸入
  2. 導航到一個URL
  3. 使用標準輸入輸入
  4. 提交表單並導航到搜索結果填寫表格
  5. 基於結果返回輸出到stdout

我從來沒有在純Ruby中做過這樣的事情,因爲我的大部分經驗都是在Rails上進行的,如果有人能指引我朝着正確的方向,我會很喜歡它。

我熟悉xpath,我的直覺就是以某種方式使用它。

回答

0

您可以使用gets作爲標準輸入。要連接到服務器,你可以做這樣的事情:

require 'net/http' 
require 'uri' 
url = URI.parse gets.chomp 
http = Net::HTTP.start url.host 
request_params = '?foo=bar' 
request = Net::HTTP::Get.new url.path + request_params 
response = http.request request 
puts response.body 

希望這有助於

+0

我很抱歉什麼部分的腳本代表輸入參數進入表格 – user858642

+0

爲什麼當打開:: URI時,Net :: HTTP會浪費時間,或者更好? –

+0

'gets'從stdin中得到一個字符串,chomp部分刪除尾隨的crlf。我使用Net :: HTTP,因爲他說他想填寫表格。據我所知,你不能張貼開放URI(你能嗎?) –

0

寫一個腳本使用HTTP請求提交表單。使用http庫如faraday

2

Mechanize是你的朋友。它可以輕鬆瀏覽網站,填寫表單並提交它們,並且是Ruby的標準。

從指南:

require 'mechanize' 

agent = Mechanize.new 
page = agent.get('http://google.com/') 

# point to the form 
google_form = page.form('f') 

# fill in a field 
google_form.q = 'ruby mechanize' 

# submit the form 
page = agent.submit(google_form, google_form.buttons.first) 

# page will now contain the returned search results 

時退房guideexamples以獲取更多信息。

機械化建立在Nokogiri之上,這是Ruby的主流XML/HTML解析器,所以如果您需要以Mechanize不直接支持的方式搜索文檔的DOM,您可以輕鬆完成。除了XPath之外,Nokogiri還支持CSS訪問器,使您可以輕鬆利用HTML和CSS編碼知識。

+0

我是新來的這種事情。如何在我的電腦上安裝機械化? – user858642

相關問題