Я пытаюсь получить доступ к ряду веб-сайтов, используя полтергейст и копибару в скрипте ruby. У меня странные проблемы с определенным веб-сайтом: http://www.slate.com/
Вот основные элементы скрипта:
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
Ответ, который я получаю, странный и непохожий на другие сайты, которые я посещаю таким образом. после session.visit
он возвращает [object Object], тогда запрос был успешным и возвращает мне мою подсказку IRB. Но затем я автоматически получаю подсказку timeout timeout
примерно через 5 или 10 секунд, а затем 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-кода в nokogiri.