从youtube URL检索JSON

时间:2016-02-23 04:50:43

标签: javascript json youtube web-scraping

我一直想找到一种方法来获取youtube视频时长而不使用API​​。检查他们的HTML源代码,我看到有一个名为ytplayer.config的javascript var(带有关于视频的信息的JSON)。如何在脚本中解析JSON?

谢谢

编辑。这是var

ytplayer.config = {
    "assets": {
        "js": "\/\/s.ytimg.com\/yts\/jsbin\/player-es_MX-vfl0Fpy-X\/base.js",
        "css": "\/\/s.ytimg.com\/yts\/cssbin\/www-player-2x-webp-vflCn1Mkc.css"
    },

    ...
    ...

    "args": {
        "vm": "CAEQAA",
        "cl": "115273808",
        "iv_invideo_url": "https:\/\/www.youtube.com\/annotations_invideo?cap_hist=1\u0026video_id=tRY6WtFVtVY",
        "tmi": "1",
        "no_get_video_log": "1",
        "host_language": "es-419",
        "keywords": "Jorge,Lanata,TN,periodismo",
        "author": "Tribuna de Periodistas",

         ...

        "length_seconds": "130",

         ...

    }
};

1 个答案:

答案 0 :(得分:1)

你非常接近。你可以通过两种方式来做到这一点:

使用配置对象:

ytplayer.config.args.length_seconds

它以秒为单位提供视频时间,然后可以除以60以获得以分钟为单位的时间

第二种方式,使用jquery:

$('.ytp-time-duration').innerHTML

上述解决方案可以在客户端使用,如果您正在寻找服务器端解决方案,请告诉我们

用户输入URL后,将URL发送到您的服务器..使用任何后端语言,我用python告诉你。

import urllib

link = "https:<youtube url>"
f = urllib.urlopen(link)
myfile = f.read()

myfile包含所有html内容,你可以使用任何解析器来获取

的值
  

YTP时间持续时间

希望有所帮助......