In [3]: import requests
In [4]: response = requests.head('https://speed.hetzner.de/100MB.bin', allow_redirects=True)
In [5]: response
Out[5]: <Response [200]>
In [6]: response.content
Out[6]: b''
In [7]: response.headers
Out[7]: {'Server': 'nginx', 'Date': 'Tue, 07 May 2019 21:21:28 GMT', 'Content-Type': 'application/octet-stream', 'Content-Length': '104857600'
, 'Last-Modified': 'Tue, 08 Oct 2013 11:48:13 GMT', 'Connection': 'keep-alive', 'ETag': '"5253f0fd-6400000"', 'Strict-Transport-Security': 'ma
x-age=15768000; includeSubDomains', 'Accept-Ranges': 'bytes'}
如果您在这里查看response.headers,您可以看到设置为'application/octet-stream'的“内容类型”。此字段应用于筛选出文件There are other content types您必须查找,以确定它是否是可下载的。一旦你有了这个过滤列表,它就是这个网页上可下载文件的列表
查看示例页面,它有3个指向文件的HREF。当您查看a href时,有时您可以判断它是一个基于扩展名的文件。但是,在正常情况下,网站可以进行一些服务器端处理,然后返回一个文件。有时URL甚至不是文件,而是指向其他页面
所以,你有两件事要做
要执行第二部分,可以使用python请求库获取内容类型。下面是一个小例子:
如果您在这里查看
response.headers
,您可以看到设置为'application/octet-stream'
的“内容类型”。此字段应用于筛选出文件There are other content types您必须查找,以确定它是否是可下载的。一旦你有了这个过滤列表,它就是这个网页上可下载文件的列表注意,我正在使用
requests.head
获取内容类型。使用HEAD请求获取有关URL的一些元信息。如果执行GET/POST,可能会超时。相关问题 更多 >
编程相关推荐