小编Omi*_*ahi的帖子

如何检查请求中的 URL 是否可下载

我正在使用tkinter 和 requests制作这个下载器应用程序,我最近在我的程序中发现了一个错误。基本上我希望我的程序在开始下载 URL 的内容之前检查给定的 URL 是否可下载。我过去常常通过获取URL标题并检查“Content-Length”是否存在来做到这一点,它适用于某些 URL(例如:https://www.google.com)但适用于其他URL(例如指向youtube 视频)它没有,它使我的程序崩溃。我看到有人说一个stackoverflow,我可以在标题的“内容处理”中检查“附件”但它对我不起作用,并为可下载和不可下载的 URL 返回了相同的内容。做这个的最好方式是什么?我尝试过但不起作用的另一个stackoverflow问题中提到的代码:

import requests
url = 'https://www.google.com'
headers=requests.head(url).headers
downloadable = 'attachment' in headers.get('Content-Disposition', '')
Run Code Online (Sandbox Code Playgroud)

我以前的代码:

headers = requests.head(url, headers={'accept-encoding': ''}).headers
try:
    print(type(headers['Content-Length']))
    file_size = int(headers['Content-Length'])
except KeyError:
    # Just a class that I defined to raise an exception if the URL was not downloadable
    raise NotDownloadable()
Run Code Online (Sandbox Code Playgroud)

UPDATE:网址: https://aspb1.cdn.asset.aparat.com/aparat-video/a5e07b7f62ffaad0c104763c23d7393215613675-360p.mp4?wmsAuthSign=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjUzMGU0Mzc3ZjRlZjVlYWU0OTFkMzdiOTZkODgwNGQ2IiwiZXhwIjoxNjExMzMzMDQxLCJpc3MiOiJTYWJhIElkZWEgR1NJRyJ9.FjMi_dkdLCUkt25dfGqPLcehpaC32dBBUNDC9cLNiu0 这个网址是我用来测试的一个。如果您打开 URL,它会直接将您引导至可以下载的视频,但在检查“内容处理”时,它返回“无”,就像我尝试过的大多数可下载和不可下载 URL 一样。

python url download python-3.x python-requests

5
推荐指数
1
解决办法
810
查看次数

标签 统计

download ×1

python ×1

python-3.x ×1

python-requests ×1

url ×1