Ruby:如何屏幕截取Ajax请求的结果

时间:2011-06-05 08:04:29

标签: ruby ajax screen-scraping open-uri

我已经写了一个ruby脚本来使用'open-uri'和'hpricot'宝石筛选一些东西 - 到目前为止一切都很好。

但现在我必须通过javascript函数(通过下拉菜单中的'onchange'事件处理程序调用)提交表单后屏幕抓取的内容:

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

AFAIK,open-uri允许您仅提交GET请求。如果我没弄错的话,这里需要一个POST请求。

所以我的问题是:我需要安装什么和'需要'以及ruby代码如何看起来像(发出POST请求) - 对不起,我还是一个n00b ...

非常感谢你的帮助!

汤姆

2 个答案:

答案 0 :(得分:2)

我认为你绝对应该使用Mechanize。它提供了一个漂亮的界面来与远程页面,表单上的表单等进行交互(see this example)。

答案 1 :(得分: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并对其进行了改进。