Python 我怎样才能从网页上下载文件的链接而不必刮去文件本身?
我想用Python编写一个下载管理器,比如JDownloader,它可以为您下载简单的文件。但并非每个文件在文档中都有下载url。如果文件在文档中类似“不可见”,如何获取下载url? 我在互联网上发现,网络嗅探可能是有效的,但它似乎不是我需要的正确的东西。JDownloader只是检查一下,直接找到您需要的东西。这是怎么回事?例如:Python 我怎样才能从网页上下载文件的链接而不必刮去文件本身?,python,html,http,packet-sniffers,jdownloader,Python,Html,Http,Packet Sniffers,Jdownloader,我想用Python编写一个下载管理器,比如JDownloader,它可以为您下载简单的文件。但并非每个文件在文档中都有下载url。如果文件在文档中类似“不可见”,如何获取下载url? 我在互联网上发现,网络嗅探可能是有效的,但它似乎不是我需要的正确的东西。JDownloader只是检查一下,直接找到您需要的东西。这是怎么回事?例如: 顺便说一句,我是一个初学者。看看您的示例页面,它有3个指向文件的HREF。当您查看a href时,有时您可以判断它是一个基于扩展名的文件。但是,在正常情况下,网站可
顺便说一句,我是一个初学者。看看您的示例页面,它有3个指向文件的HREF。当您查看a href时,有时您可以判断它是一个基于扩展名的文件。但是,在正常情况下,网站可以进行一些服务器端处理,然后返回一个文件。有时URL甚至不是文件,而是指向其他页面 所以,你有两件事要做
:导入请求
在[4]中:response=requests.head('https://speed.hetzner.de/100MB.bin,允许_重定向=True)
在[5]中:响应
出[5]:
在[6]中:response.content
Out[6]:b“
在[7]中:response.headers
Out[7]:{'Server':'nginx','Date':'2019年5月7日星期二21:21:28 GMT','Content Type':'application/octet stream','Content Length':'104857600'
,“上次修改”:“2013年10月8日星期二11:48:13 GMT”,“连接”:“保持活动”,“ETag”:“5253f0fd-6400000”,“严格的传输安全”:“ma”
x-age=15768000;包括子域“,”接受范围“:”字节“}
如果您在这里查看响应.headers
,您可以看到设置为'application/octet stream'
的“内容类型”。此字段应用于筛选出文件。为了决定它是否是可下载的,你必须寻找它。一旦你有了这个过滤列表,它就是这个网页上可下载文件的列表
注意,我正在使用
requests.head
获取内容类型。使用HEAD请求获取有关URL的一些元信息。如果执行GET/POST,它可能会超时。查看示例页面,它有3个指向文件的HREF。当您查看a href时,有时您可以判断它是一个基于扩展名的文件。但是,在正常情况下,网站可以进行一些服务器端处理,然后返回一个文件。有时URL甚至不是文件,而是指向其他页面
所以,你有两件事要做
:导入请求
在[4]中:response=requests.head('https://speed.hetzner.de/100MB.bin,允许_重定向=True)
在[5]中:响应
出[5]:
在[6]中:response.content
Out[6]:b“
在[7]中:response.headers
Out[7]:{'Server':'nginx','Date':'2019年5月7日星期二21:21:28 GMT','Content Type':'application/octet stream','Content Length':'104857600'
,“上次修改”:“2013年10月8日星期二11:48:13 GMT”,“连接”:“保持活动”,“ETag”:“5253f0fd-6400000”,“严格的传输安全”:“ma”
x-age=15768000;包括子域“,”接受范围“:”字节“}
如果您在这里查看响应.headers
,您可以看到设置为'application/octet stream'
的“内容类型”。此字段应用于筛选出文件。为了决定它是否是可下载的,你必须寻找它。一旦你有了这个过滤列表,它就是这个网页上可下载文件的列表
注意,我正在使用
requests.head
获取内容类型。使用HEAD请求获取有关URL的一些元信息。如果您执行GET/POST,它可能会超时。但是想象一下,您的站点没有url,但页面上仍然有一个视频。我所知道的是,这个视频url在你点击视频时显示,但并非每次都是这样。你的意思是,你需要执行“用户操作”,然后才能“看到”html文档中的url?你总是可以解析html并获得多媒体元素的列表,对吗?这是一个非常开放的问题。我建议你做一点研究,收集你想要支持的所有html元素,并寻找类似于我的答案中建议的方法,过滤你从这些标签收集的数据