Nokogiri和Mechanize问题

Nic*_*k_K 1 ruby mechanize nokogiri

我在mechanize doc网站上做了一个例子,我想用nokogiri解析结果.

我的问题是当执行以下行时:

doc = Nokogiri::HTML(search_results, 'UTF-8' )
Run Code Online (Sandbox Code Playgroud)

发生以下错误:

C:/Ruby192/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.4.1-x86-mingw32/lib/nokogiri/html/document.rb:71:in `parse': undefined method `name' for "UTF-8":String (NoMethodError)
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/nokogiri-1.4.4.1-x86-mingw32/lib/nokogiri/html.rb:13:in `HTML'
    from mechanize_test.rb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我在windows vista机器上安装了ruby 1.9

机械化返回的结果是非拉丁语(utf8)

代码示例如下.

# encoding: UTF-8

 require 'rubygems'
 require 'mechanize'
 require 'nokogiri'

 agent = Mechanize.new
 agent.user_agent_alias = 'Mac Safari'
 page = agent.get("http://www.google.com/")
 search_form = page.form_with(:name => "f")
 search_form.field_with(:name => "q").value = "invitations"
 search_results = agent.submit(search_form)
 puts search_results.body

 doc = Nokogiri::HTML(search_results, 'UTF-8')
Run Code Online (Sandbox Code Playgroud)

Nic*_*k_K 5

@Douglas Drouillard

对此进行调查.我发现我犯了一个错误.对nokogiri的呼吁应该是:

doc = Nokogiri::HTML(search_results.body, 'UTF-8')
Run Code Online (Sandbox Code Playgroud)

请注意,这search_results是不同的search_results.body.

Search_results包含来自机械化实例化的信息,同时search_resuls.body包含nokogiri可以解析的html utf8信息没有问题.