私は、ポルターガイストとコピーブラを使って一連のウェブサイトにアクセスしようとしています。私は特定のウェブサイトとの奇妙な問題を抱えています:ポルターガイスト/ PhantomJS/Capybara/Nokogiriを使用してサイトを削るのが難しい。ウェブサイト上で開催中
require 'nokogiri'
require 'capybara/poltergeist'
slate = "http://www.slate.com"
OPTIONS = {:js_errors => false, :debug => true, :timeout => 120, :phantomjs_options => ['--ignore-ssl-errors=false', '--load-images=false']}
USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, OPTIONS)
end
session = Capybara::Session.new(:poltergeist)
session.driver.headers = {"User-Agent" => USER_AGENT}
session.visit slate
私が得る応答が奇数であり、他のサイトとは違って、私はこのように訪れています:ここでhttp://www.slate.com/
は、スクリプトの基本的な要素があります。 session.visit
で[object Object]を返し、要求が成功し、IRBプロンプトが返されます。しかし、私は約5秒か10秒後に私のプロンプトtimeout timeout
に自動的に入り、次にMySlateData data is empy
になります。
irb(main):016:0> session.visit slate
[object Object]
=> {"status"=>"success"}
irb(main):017:0> timeout timeout
MySlateData data is empty
なぜ応答が奇妙な方法でセッションを保持しているように見えるのでしょうか?私がデバッグでOPTIONS
を実行すると、私は本当にそれほど有用ではありません。何らかの理由で
irb(main):014:0> session.visit slate
{"id":"bba72e5e-fd27-4d92-bdb8-7cc0172afaf6","name":"visit","args":["http://www.slate.com"]}
[object Object]
{"command_id":"bba72e5e-fd27-4d92-bdb8-7cc0172afaf6","response":{"status":"success"}}
=> {"status"=>"success"}
irb(main):015:0> timeout timeout
MySlateData data is empty
それは鋸山にロードするHTMLに干渉だので、私はこすり結果のHTMLにできませんよ。
ポルターガイストとPhantomJSのどのバージョンを使用していますか? –
ポルターガイストは1.8.1で、PhantomJSは2.0.0 – roy