2011-06-05 36 views
1

我已經寫了一個ruby腳本來使用'open-uri'和'hpricot'寶石來屏蔽某些東西 - 一切都很好。Ruby:如何屏幕刮取Ajax請求的結果

但現在我不得不屏幕刮這是一個形式(從下拉菜單中通過「的onchange」事件處理函數調用),通過JavaScript函數提交後返回的東西:

function submit_form() { 
    document.list.action="/some/sort/of/path"; 
    document.list.submit(); 
} 

據我所知, open-uri讓你只提交GET請求。如果我沒有弄錯,這裏需要POST請求。

所以我的問題是:我需要什麼安裝和'需要',以及如何將Ruby代碼看起來像(做出POST請求) - 對不起,我仍然是一個n00b .. 。

非常感謝您的幫助!

湯姆

回答

2

我想你一定要使用Mechanize。它提供了一個漂亮的界面來與遠程頁面進行交互,它們的表單等等(see this example)。

+0

非常感謝!我只是閱讀文檔 - 確實是非常好的解決方案!另外,機械化與Nokogiri集成。 – TomDogg 2011-06-05 10:42:23

0

Ruby標準庫有http class,它自然支持POST操作。

 
Net::HTTP.post_form(URI.parse('http://www.example.com/some/sort/of/path') 

如果發現不是最佳少那裏的API,然後看看在httparty gem

最後,雖然角度來說,Hpricot是一個偉大的寶石,它不是積極地開發下去了。你應該考慮移動到nokogiri這實際上取代了hpricot並改進。

+0

感謝您的意見 - 有趣! – TomDogg 2011-06-05 10:40:53