脚本从stdin获取输入并导航到网站并返回输出

时间:2011-07-22 20:47:59

标签: html ruby xpath

我是Ruby on Rails开发人员,他被要求编写纯Ruby脚本。

目标是:

  1. 使用stdin
  2. 进行用户输入
  3. 导航到网址
  4. 使用stdin输入
  5. 填写表单
  6. 提交表单并导航至搜索结果页
  7. 根据结果
  8. 将输出返回到标准输出

    我从来没有在纯Ruby中做过这样的事情,因为我的大多数经验都是关于Rails的,如果有人能指出我正确的方向,我会很高兴。

    我熟悉xpath,我的直觉是以某种方式使用它。

3 个答案:

答案 0 :(得分: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了解详情。

Mechanize建立在Nokogiri之上,它是Ruby的主要XML / HTML解析器,因此如果您需要以不受Mechanize直接支持的方式搜索文档的DOM,您可以轻松地执行此操作。除了XPath之外,Nokogiri还支持CSS访问器,使您可以轻松利用HTML和CSS编码知识。

答案 1 :(得分: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

希望这有帮助

答案 2 :(得分:0)

编写脚本以使用HTTP请求提交表单。使用像faraday

这样的http库