0

我将 Typhoeus 与 Hydra 一起使用以发出并行请求。我的最终目标是将台风响应解析为机械化对象。

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 方法给了我错误,因为它无法解析 typhoeus 响应对象

/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)

无论如何我可以将 Typhoeus 响应转换为 Net::HTTPResponse 对象吗?或者有没有其他方法可以将 Mechanize 和 Typhoeus 组合在一起?这样,我可以使用 typhoeus 发出并行请求,并使用 Mechanize 库抓取数据。

4

1 回答 1

2
  1. 我试图从 Typhoeus::Response 创建一个 Net::HTTPResponse(https://github.com/ruby/ruby/blob/trunk/lib/net/http/response.rb),但没有成功. 调用初始化程序很容易,但设置响应正文或标头却不是。

  2. 我研究了机械化,看看是否可以将其更改为使用 Typhoeus 提出请求,但我认为现在不可能。Net/http 真的是硬连线到机械化。我想到了一个机械化-台风适配器,这会很好。

于 2012-10-25T22:06:50.913 回答