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

typhoeus 応答オブジェクトを解析できないため、agent.parse メソッドでエラーが発生しています

/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. mechanize を調べて、Typhoeus を使用してリクエストを行うように変更できるかどうかを確認しましたが、現時点ではそれが可能だとは思いません。Net/http は、機械化に組み込まれています。mechanize-typhoeus アダプターを思いつきました。

于 2012-10-25T22:06:50.913 に答える