在抓取页面的时候,很重要的一点就是要对URL进行索引,避免重复抓取。
开始想了几条路线:
一个是自己做一个索引文件,定义一个bit数组,每一位代表对应的URL是否被抓取过(0或1)。对URL进行Hash或者crc到bit数组的指定位。虽然轻便,但是要自己维护,难免不会出bug。
一个是用Lucene或者Solr,虽然简单,但是有点重量级,感觉大炮打蚊子。
一个是用mysql,对URL进行crc建立索引。最终决定用这个,直观方便也轻便。
首先根据需要建表:
create table url_visit_times (
id int auto_increment,
url varchar(255) not null,
url_crc int unsigned not null default 0,
primary key (id)
)
其中url_crc是对URL进行一个模拟哈希。
对url_crc建立索引。
再建立相应触发器:
delimiter //
create trigger url_crc before insert on url_visit_times for each row begin
set new.url_crc = crc32(new.url);
end
//
creat