我正在尝试从此网页获取电台列表 - 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的最佳方式吗?
答案 0 :(得分:7)
试试这样:
require 'nokogiri'
require 'open-uri'
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
doc = Nokogiri::HTML open(https_url)