读取zip文件而无需完全下载

hb.*_*hb. 3 .net c# algorithm zip

是否可以在不完全下载的情况下读取.ZIP文件的内容?

我正在构建一个爬虫,我宁愿不必下载每个zip文件只是为了索引它们的内容.

谢谢;

mdm*_*dma 5

棘手的部分是识别中心目录的开始,该目录发生在文件的末尾.由于每个条目都是相同的固定大小,因此您可以从文件末尾开始进行一种二进制搜索.二进制搜索试图猜测中心目录中有多少条目.从一些合理的值N开始,并在end-(N*sizeof(DirectoryEntry))检索文件的那一部分.如果该文件位置不以中心目录条目签名开头,则N太大 - 一半重复,否则,N太小,双重并重复.与二进制搜索一样,该过程保持当前的上限和下限.当两者相等时,您已找到N的值,即条目数.

您点击网络服务器的次数最多为16次,因为不超过64K条目.

这是否比下载整个文件更有效取决于文件大小.您可以在下载之前请求资源的大小,如果它小于给定的阈值,请下载整个资源.对于大型资源,如果阈值设置为高,请求多个偏移将更快,并且对网络服务器总体上减少负担.

HTTP/1.1允许下载资源范围.对于HTTP/1.0,您别无选择,只能下载整个文件.