Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 机械化与伤寒_Ruby_Mechanize_Typhoeus - Fatal编程技术网

Ruby 机械化与伤寒

Ruby 机械化与伤寒,ruby,mechanize,typhoeus,Ruby,Mechanize,Typhoeus,我使用Typhous和Hydra来进行并行请求。我的最终目标是将Typhous响应解析为mechanize对象 url = "http://example.com/" hydra = Typhoeus::Hydra.new agent = Mechanize.new request = Typhoeus::Request.new(url, :method => :get, :proxy => "#{proxy_host}:#{proxy_port}") request.on_comp

我使用Typhous和Hydra来进行并行请求。我的最终目标是将Typhous响应解析为mechanize对象

url = "http://example.com/"
hydra = Typhoeus::Hydra.new
agent = Mechanize.new
request = Typhoeus::Request.new(url, :method => :get, :proxy => "#{proxy_host}:#{proxy_port}")
request.on_complete do |response|  #Typhoeus::response object
  body = response.body
  uri = request.parsed_uri
  page = agent.parse(uri, response, body)
end
hydra.queue(request)
hydra.run
agent.parse方法出现错误,因为它无法分析Typhous响应对象

/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize.rb:1165:in `parse': undefined method `[]' for #<Typhoeus::Response:0x00000012cd9da0> (NoMethodError)
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mechanize-2.5.1/lib/mechanize.rb:1165:in“parse”:用于#的未定义方法“[]”(NoMethodError)
我是否可以将Typhous响应转换为Net::HTTPResponse对象? 或者有没有其他方法我可以把机械化和台风联合起来?因此,我可以使用Typhous进行并行请求,并使用Mechanize库刮取数据

  • 我试图创建一个Net::HTTPResponse(https://github.com/ruby/ruby/blob/trunk/lib/net/http/response.rb)来自Typhous::响应,但没有成功。调用初始值设定项很容易,但设置响应正文或标题却不容易

  • 我查看了mechanize,看看它是否可以改为使用Typhous进行请求,但我认为现在不可能。Net/http确实与mechanize紧密相连。我想到了一个机械化的Typhous适配器,这会很好


  • 除非您需要表单处理,否则您可以使用nokogiri,它是mechanize使用的解析器。@pguardiario:是的,我在代码中进一步使用了mechanize解析器。我之所以使用mechanize而不是nokogiri,只是因为我可以使用mechanize对象而不是nokogiri html文档做更多的事情。这是否意味着表单?我这样问是因为根据我的经验,你不太可能真的需要它。发布该代码可能是有意义的。