是否可以在不完全下载的情况下了解网站上的存档内容? 例如,我想知道里面有pdf文件。如果是,我会下载这样的 zip/rar,如果没有 - 我会跳过它。 那么,是否可以获取一小部分存档并解压文件夹/文件结构?
最佳答案
是的,这是可能的,但我认为这也取决于您下载的服务器。您需要制作 HTTP range requests获取您请求的数据片段。
对于 ZIP 文件,您需要获取文件末尾的所有中心目录记录。您可以通过获取足够的最后数据并查找中央目录记录结尾 (EOCD) 来完成此操作。如果没有注释,这应该是从 0x06054b50 开始的最后 22 个字节。该记录具有中央目录相对于存档开始位置的偏移量。然后,您确定是否已在第一次抓取中下载了所有数据,或者是否需要再次抓取更多数据。之后,您只需解释中央目录文件头即可查看 ZIP 中是否有 PDF 文件。有关文件格式的信息可以在 Wikipedia page 上找到。或者在那边的引用文献之一中。
对 RAR 文件执行相同的操作将会更加困难,因为没有一个位置可以从中获取所有元数据。您需要检查 RAR 中的文件头 block 。如果该文件只有一个存档文件,您可以只获取前 X 个字节并进行检查。看看RAR TechNote.txt了解如何解析 RAR 文件。
我对 RAR 文件做了同样的事情,但随后是基于 NZB 文件从 Usenet 进行的。生成的 RAR 元数据收集在 SRR file 内。您可以在 pyReScene 中找到该代码以及其他 RAR 相关代码。项目。从 HTTP 执行相同的操作会容易得多,因为您可以忽略 yEnc 编码内容,并且可以更精确地选择字节范围。
关于web - 无需完全下载即可获取 zip/rar 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099468/