检查是否存在大文件而不下载

Jui*_*icy 7 http-headers web-scraping python-3.x python-requests

不知道这是否可行,但是我想检查HTTP请求到大文件的状态代码,而无需下载它。我只想检查服务器上是否存在。

是否可以使用Python做到这一点requests?我已经知道如何检查状态码,但是只有在下载文件后才能执行此操作。

我想我要问的是,您是否可以发出GET请求并在收到响应标头后立即将其停止?

宏杰李*_*宏杰李 9

use requests.head(),它仅返回请求的标头,而不是所有内容,换句话说,它不会返回消息正文,但是您可以从标头中获取所有信息。

HEAD方法与GET相同,除了服务器在响应中不得返回消息正文。响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需转移实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最新修改。

例如:

import requests
url = 'http://lmsotfy.com/so.png'
r = requests.head(url)
r.headers
Run Code Online (Sandbox Code Playgroud)

出:

{'Content-Type': 'image/png', 'Content-Length': '6347', 'ETag': '"18cb-4f7c2f94011da"', 'Accept-Ranges': 'bytes', 'Date': 'Mon, 09 Jan 2017 11:23:53 GMT', 'Last-Modified': 'Thu, 24 Apr 2014 05:18:04 GMT', 'Server': 'Apache', 'Keep-Alive': 'timeout=2, max=100', 'Connection': 'Keep-Alive'}
Run Code Online (Sandbox Code Playgroud)

此代码不会下载图片,但会返回图片消息的标题,其中包含大小,类型,日期。并且,如果图片不存在,将没有此类信息。