Mechanizeでニコニコ動画の最新コメント500件を取得する
Mechanize使うだけですが、私の環境(RubyInstaller)でCA証明書のデフォルトパスを調べてみると
irb(main):001:0> require "openssl" => true irb(main):002:0> p OpenSSL::X509::DEFAULT_CERT_FILE "C:/Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows/op enssl/1.0.0k/ssl/cert.pem" => "C:/Users/Luis/Code/openknapsack/knap-build/var/knapsack/software/x86-windows /openssl/1.0.0k/ssl/cert.pem"
これでは困るのでカレントフォルダに置いたものを指定して使います。Mechanizeのドキュメント^1を参照。
cURLが配布しているもの^2が有名のようです。
require "mechanize" require "uri" mail = "your_mail_address" password = "your_password" auth = "https://secure.nicovideo.jp/secure/login?site=niconico" getflv = "http://www.nicovideo.jp/api/getflv?v=" id = "video_id" # e.g. sm9 cert_store = OpenSSL::X509::Store.new cert_store.add_file "cacert.pem" crawler = Mechanize.new crawler.cert_store = cert_store crawler.post auth, mail: mail, password: password params = crawler.get getflv + id body = URI.decode(params.body) params = {} body.split("&").each do |elem| param = elem.split("=") params[param[0]] = param[1] end comments = crawler.post params["ms"], "<thread res_from=\"-500\" version=\"20061206\" thread=\"#{params['thread_id']}\" />" File.write(id + ".xml", comments.body)