需要帮助连接到使用Ruby的HTTPS URL并将源数据传递给Nokogiri

时间:2012-03-07 05:33:22

标签: ruby json parsing https nokogiri

我正在尝试从此网页获取电台列表 - https://web.barclayscyclehire.tfl.gov.uk/maps

我看到他们在javascript中有JSON结构中的站点列表。所以我试图连接到页面,然后将数据传递给Nokogiri以获取带有JSON的javascript,然后单独解析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 个答案:

答案 0 :(得分:7)

试试这样:

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

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