操纵网页并让它使用 ruby 发回结果

Manipulate webpage and have it send back results using ruby

这里是:

我使用 ruby 获取用户输入,这是一种简单的方法..假设我请求 2 个输入:

input1 = gets.chomp

input2 = gets.chomp

现在我想将此信息发送给一个搜索引擎,它分别采用这两个选项并进行搜索。我怎样才能做到这一点?在这种情况下,什么 API/Gems 对我有帮助?

我知道我可以将这两个输入插入到 url 中,但这并不那么简单,因为根据输入 url 结构不是常量..(我不会'不过我不想用这种方式..)
自从我在 ruby 编程以来已经有很长时间了,我知道如何访问网页和类似的东西,但我想操纵并接收回来。有什么想法吗?

如果理解有误请指正

据我了解,您想在 URL 中对两个输入进行编码,将它们发送到 API 并接收返回的结果。

您可以使用 Ruby 标准库中的 Net::HTTP 库。这是文档中带有动态参数的示例:

uri = URI('http://example.com/index.html')
params = { :limit => 10, :page => 3 }
uri.query = URI.encode_www_form(params)

res = Net::HTTP.get_response(uri)
puts res.body if res.is_a?(Net::HTTPSuccess)

或者你可以用一些宝石给你包起来。 HTTParty 似乎很受欢迎。您可以像

一样简单地做到这一点
HTTParty.get('http://foo.com/resource.json', query: {limit: 10})

如果您谈论的是没有任何 API 访问权限或复杂的 JS 逻辑的网站前端,您可以简单地使用 mechanize gem,它允许您做一些事情喜欢:

require 'rubygems'
require 'mechanize'

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

form = page.forms.first
form['field_name_1'] = input1
form['field_name_2'] = input2

page = agent.submit(form, form.buttons.first)
puts page

→ 查看 official documentation for more examples

如果您打算使用第三方 REST API,您最好尝试 faraday or other popular gems(取决于您的品味和特定任务)。