使用C++和zlib解压缩.gz文件并读入内存

一般我们自己用.gz文件的时候会先
gzip xxx.gz
然后就地解压缩生成文件,如果本身就是要原文件还行,但如果再程序需要在内存中再处理,就不OK了。
因为会浪费两次I/O,特别是文件特别大或者特别多的时候。
因此,使用zlib将.gz文件直接解压并读取到内存,就很重要了。
#include <zlib.h>
#include <iostream>
#include <string>

#define GZ_BUF_SIZE 104857[......]

继续阅读

设计网页爬虫需注意的问题

最近有空的时候在读Larbin的源代码,虽然是03年的了,但是很多细节都考虑的很周到,记录一下细节问题吧。

1、针对同一IP/HOST,不可访问过频繁,最好按其进行队列。

2、注意处理、过滤url后缀,以及Content-Type,我觉得Content-Type才是王道吧。

3、注意去重的问题,包括URL去重和网页内容去重。特别是有的网站是多个域名,很可能爬到实际内容重复,只是url不同的。Larbin中URL去重用的是简单的比特位Hash表。

看到了再继续更新。[......]

继续阅读