我想隔离pageInfo - > TotalResults以检查链接是否有效(= 1)
这是video_controller.rb:
submitted_link = "https://www.googleapis.com/youtube/v3/videos?part=id&id="+@results[:id]+"&key="+ENV["KEY_YOUTUBE"]
link_result = Nokogiri::HTML(open(submitted_link))
我得到了这个结果:
{
"kind": "youtube#videoListResponse",
"etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/GWU-
KIYwNWh_dAkOcA5xDaFhS48\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"uQc-
MPTsstrHkQcRXL3IWLmeNsM/wp71OkMYYohvwOjzLL_4NN8r7w0\"",
"id": "m9h7qCdgPN4"
}
]
}
有你的想法吗?
答案 0 :(得分:0)
这不是Nokogiri的任务,因为Nokogiri用于解析HTML或XML。文档以:
开头Nokogiri非常快速地解析和搜索XML / HTML,并且也正确 实现了CSS3选择器支持以及XPath 1.0支持。
相反,您的输出是JSON,需要由JSON类解析。 这是未经测试的代码,但是在球场:
require 'open-uri'
require 'json'
foo = JSON[open("https://www.googleapis.com/youtube/v3/videos?part=id&id=#{@results[:id]}&key=#{ENV['KEY_YOUTUBE']}").read]
解析后,您将返回一个Ruby对象,在这种情况下是一个哈希。冥想:
require 'json'
str = DATA.read
foo = JSON[str]
# => {"kind"=>"youtube#videoListResponse",
# "etag"=>"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/GWU-KIYwNWh_dAkOcA5xDaFhS48\"",
# "pageInfo"=>{"totalResults"=>1, "resultsPerPage"=>1},
# "items"=>
# [{"kind"=>"youtube#video",
# "etag"=>"\"uQc-MPTsstrHkQcRXL3IWLmeNsM/wp71OkMYYohvwOjzLL_4NN8r7w0\"",
# "id"=>"m9h7qCdgPN4"}]}
foo['pageInfo']['totalResults'] # => 1
__END__
{
"kind": "youtube#videoListResponse",
"etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/GWU-KIYwNWh_dAkOcA5xDaFhS48\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/wp71OkMYYohvwOjzLL_4NN8r7w0\"",
"id": "m9h7qCdgPN4"
}
]
}