我得到一个文件的URL,例如, http://cidian.youdao.com/download/YoudaoDict.exe
我怎样才能得到它的版本,但不下载它?
nots 1:如果你先在你的计算机上下载文件,有很多方法可以得到它
版本,例如,您可以使用窗口工具“fiLever.exe”来获取版本。
存储有关文件的其他元数据
用Python读取元数据
但我不想下载它,至less不能下载,我可以做什么? 等待你的
帮帮我! 谢谢。
首先,我使用下载工具“wget.exe”来下载文件的一部分(wget.exe是
一个单线程下载工具,它可以确保下载表头)
这样,一些软件我可以得到它的版本,但有些不能(他们必须都是
下载)。我不知道为什么。
如何使用Python访问文件元数据?
如何使用BASH查找文件的元信息
$ curl -I http://cidian.youdao.com/download/YoudaoDict.exe HTTP/1.1 200 OK ... Accept-Ranges: bytes Content-Length: 4820792 ... Content-Type: application/octet-stream
您可以创建一个或多个HTTP字节范围请求,以获取确定版本所需的文件部分。 如果您的硬盘上存在文件,那么您只需要提出几个请求即可获取该文件的各个部分。
例如,根据HTTP / 1.1规范 ,您可以使用此请求标头请求前500个字节:
curl -H"Range: bytes=0-499" http://... -o bytes-0-499.dat
版本号(如果有)嵌入.exe文件本身。 您将不得不下载至少一部分文件以检索这些元数据。
查看.exe文件格式规范 。
您可以执行HTTP HEAD请求,服务器可以在Content-Length中报告项目的大小。 它也可能会报告Last-Modified标题下的一个版本。 此外, ETag可以出于相同的目的。
你可以用netcat测试这个:
> nc cidian.youdao.com 80 HEAD /download/YoudaoDict.exe HTTP/1.1 Host: cidian.youdao.com HTTP/1.1 200 OK Date: Mon,10 Aug 2009 06:11:59 GMT server: Apache ETag: "Dcm1w6Vxg51" Last-Modified: Sat,08 Aug 2009 02:18:40 GMT Accept-Ranges: bytes Content-Length: 4820792 X-Request-Received: t=1249884719506801 X-Request-Processing-Time: D=906244 Content-Type: application/octet-stream
正如你所看到的,在你的例子中,所有的三个头都给出了,所以你可以猜测基于这些信息的版本变化。 我总是会检查确保Date和Last-Modified不一样,因为有时后者被设置为由脚本生成的页面的前者。
理论上讲,这是HTTP HEAD请求所设计的任务,但是iirc默认只有相关的信息(如果请求被处理的话)将是Content-Length和Last-Modified。 编辑:和ETag !
这可能会让你了解你需要知道的大部分内容,但是如果你真的想要版本号,那么你必须控制Web服务,并能够获取这些信息并将其附加到响应头文件中。 没有这么难做,但只有当你有控制的服务。
如果您的目的是要检测新版本何时可用,您可以像其他人所建议的那样查看HEAD HTTP请求的响应。
否则,你可以屏幕上的( 下载页面 )提取最新版本的细节。 有一个方便的<dl id="downloadSth">标签,其中版本信息被列出并且可以被收获。 我不知道这是否可靠; 该网站的作者可以改变这一点,恕不另行通知
我会考虑使用BeautifulSoup这个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。