网络爬虫中高效率的URL索引

86 篇文章 3 订阅
52 篇文章 0 订阅

在爬虫工作过程中,需要把爬过的URL做成索引,之后每次分析到新的URL时与爬过的URL匹配


一般可以使用字符串匹配,但如果有几十万,上百万数据时呢?匹配过程会非常缓慢,


这时可以使用这个算法,用哈希对URL计算一个值,然后存在一个足够大的数组中


而哈希值对应该数组的索引,在新的URL匹配时,对URL进行哈希计算,计算的值 为数组的索引


这样每次匹配速度会极快,下面是代码的实现


#include <stdio.h>
#include <string.h>

int url[10000];

int Get_Url_HashIndex(char *Url,int Num)
{
	int hash = 0;

	int i;
   
	char *b= (char*)&hash;

	for(i=0;i<strlen(Url);i++)
	{
	  b[i % 4] =  b[i % 4] ^ Url[i];
	}

	return hash % Num;
}


void main()
{

	int urlindex = Get_Url_HashIndex("httn",10000);

	printf("hash:%d\n",urlindex);

	if (url[urlindex] == 0)
	{
		printf("首次匹配");
		url[urlindex] = 1;
	}

	urlindex = Get_Url_HashIndex("http://www.baidu.com",10000);
	if (url[urlindex] == 0)
	{
		printf("测试匹配");
		url[urlindex] = 1;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值