【问题标题】:Retrieving a JSON from a youtube URL从 youtube URL 检索 JSON
【发布时间】:2016-06-04 18:58:10
【问题描述】:

我正在寻找一种无需使用 API 即可获得 youtube 视频时长的方法。检查他们的 HTML 源代码,我看到有一个名为 ytplayer.config 的 javascript var(带有视频信息的 JSON)。如何让 JSON 在脚本中解析?

谢谢

编辑。这是变量

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",

         ...

    }
};

【问题讨论】:

  • 创建一个服务器端应用程序,该应用程序接受来自您网页的地址并从 youtube 加载给定的 url。希望配置将在“基本”页面中。否则,您将不得不在服务器端使用类似于启用了 javascript 的浏览器的东西来加载包含视频的 youtube 页面,并做一些聪明的事情来获得配置……就个人而言,API 听起来很多更容易
  • 我真的,真的不建议您绕过 Google 的 API,除非您束手无策。这些“未记录”的 API 可能会在您不知情的情况下发生更改(这不止一次让我感到痛苦)。
  • 也许你们都对,我应该使用 API,但我知道它每天都有限制
  • 查看“配额使用”部分 - developers.google.com/youtube/v3/getting-started

标签: javascript json youtube web-scraping


【解决方案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 持续时间

希望对你有帮助..

【讨论】:

  • 你能再解释一下,你读它的意思吗?
  • 我在自己的页面中,用户在表单中输入 url,在处理表单时,我想使用 jquery 或 PHP 从该 url 的源代码中读取时间。我需要访问远程页面中的变量
  • 谢谢,是的,它有帮助
猜你喜欢
  • 2014-12-15
  • 2016-02-10
  • 1970-01-01
  • 2015-02-06
  • 2013-05-12
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多