将Mechanize宝石与Nokogiri宝石一起使用?

时间:2014-04-14 16:03:06

标签: ruby-on-rails ruby web-scraping nokogiri mechanize

我正在尝试搜索需要身份验证的网站,以获取ID为#cellTotal的网页上的元素。

现在,使用Mechanize我已登录到我想访问的页面,但使用基本的Nokogiri功能,如:

@selector = page.css("#cellTotal").text

给我这个错误:

undefined method `css' for #<Mechanize::Page:0x61234f8>

这是我到目前为止所做的:

agent = Mechanize.new
agent.get("example.com")
agent.page.forms[0]["username_field"] = "username"
agent.page.forms[0]["password_field"] = "password"
agent.page.forms[0].submit

@selector = agent.page.css("#cellTotal").text

如何在此页面上选择元素?

1 个答案:

答案 0 :(得分:2)

您可以使用page.parser来访问基础Nokogiri对象。

http://mechanize.rubyforge.org/Mechanize/Page.html#method-i-parser

require 'mechanize'
agent = Mechanize.new
agent.get("http://stackoverflow.com/questions/23064821/using-the-mechanize-gem-with-the-nokogirl-gem/")
agent.page.parser.class
# => Nokogiri::HTML::Document
agent.page.parser.css("#answer-23065003 .user-details a").text
# => "akatakritos"