【问题标题】:How to check if a youtube video exists using python?如何使用python检查youtube视频是否存在?
【发布时间】:2021-10-19 10:14:22
【问题描述】:

我有一个简单的函数,用于检查网站是否存在:

def try_site(url):
    request = requests.get(url)
    return request.status_code == 200

问题是,对于没有视频的 youtube 网址,仍然存在一个页面——它不会返回 404 或类似的东西。所以我的代码显然认为该页面存在。我将如何检查视频是否存在?

【问题讨论】:

  • 您不应该检查request.status_code == 200,这样您就知道该操作实际上是成功的吗?不会解决问题,但以后可能会消除其他一些问题
  • @Matiiss 确实如此,我现在想想。我只是在想所有低于 400 的代码都意味着页面存在(否则我应该得到 404 或其他东西),但是是的......你是对的。

标签: python python-3.x python-requests youtube


【解决方案1】:

获取网页并检查页面中是否有“视频不可用”之类的文字。

【讨论】:

    【解决方案2】:
    import requests
    
    pattern = '"playabilityStatus":{"status":"ERROR","reason":"Video unavailable"'
    
    
    def try_site(url):
        request = requests.get(url)
        return False if pattern in request.text else True
    
    
    print(try_site("https://youtu.be/dQw4w9WgXcQ"))
    print(try_site("https://youtu.be/dQw4w9WgXcR"))
    

    【讨论】:

      【解决方案3】:

      您可以做的最简单的事情(至少适用于 youtube):

      编辑:这将更多的是检查特定的url是否可以直接成功访问

      def try_site(url):
          request = requests.get(url, allow_redirects=False)
          return request.status_code == 200
      

      不允许重定向并特别检查状态代码 200,例如,状态代码 302 存在一个小问题(在 youtube 的 URL 无效的情况下返回)意味着重定向到标题中提到的其他一些 URL,简而言之,这意味着您正在搜索的特定网址无法直接访问,那里没有内容,但这并不意味着特定内容不存在,它可能已被移动到其他地方服务器(可能会在标题中提到)(如果是 youtube,可能不会)

      【讨论】:

        猜你喜欢
        • 2015-10-08
        • 2015-08-10
        • 2010-11-25
        • 2020-07-13
        • 2015-12-27
        • 2012-11-10
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        相关资源
        最近更新 更多