Нужна помощь в подключении к URL-адресу HTTPS с Ruby и передаче исходных данных в Nokogiri - PullRequest
2 голосов
/ 07 марта 2012

Я пытаюсь получить список станций с этой веб-страницы - https://web.barclayscyclehire.tfl.gov.uk/maps

Я вижу, что у них есть список станций в структуре JSON в javascript. Поэтому я пытаюсь подключиться к странице, а затем передать данные в Nokogiri, чтобы получить javascript с JSON, а затем проанализировать JSON по отдельности.

Чтобы подключиться к HTTPS и передать данные в Nokogiri, я использовал этот код, доступный здесь - https://gist.github.com/1037492

require 'net/https'
require 'nokogiri'

url = "https://example.com"
url = URI.parse( url )
http = Net::HTTP.new( url.host, url.port )
http.use_ssl = true if url.port == 443
http.verify_mode = OpenSSL::SSL::VERIFY_NONE if url.port == 443
path = url.path
path += "?" + url.query unless url.query.nil?
res, data = http.get( path )

case res
  when Net::HTTPSuccess, Net::HTTPRedirection
    # parse link
    doc = Nokogiri::HTML(data)
     # do what you want ...
  else
    return "failed" + res.to_s
end

Однако, когда я пытаюсь выполнить отладку в Aptana Studio 3, прежде чем отладчик может остановиться на любой точке останова, которая у меня есть, он завершается, выдавая мне недопустимую ошибку возврата. Что-то не так с этим кодом? И это лучший способ подключиться к HTTPS и передать данные в Nokogiri?

1 Ответ

7 голосов
/ 07 марта 2012

Попробуй так:

require 'nokogiri'
require 'open-uri'
require 'openssl'

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
doc = Nokogiri::HTML open(https_url)
...