NCrawler爬虫在应用中一些问题

来源:互联网 发布:linux 禁止访问某个ip 编辑:程序博客网 时间:2024/06/04 18:06

1)HTML 处理使用的是htmlagilitypack,其中HtmlEntity.DeEntitize函数处理文本中的转义字符后,  " " 字符映射为UNICODE 160,影响某些文本的分词处理。目前没有好解决方案,我的方法是在调用函数前把这个串过滤掉,毕竟这个串是在文本中出现最多的。

 

2)关于深度搜索时候,添加到队列中的URI,默认情况是:“不是本站点的子链接,都过滤,不处理”,这个处理应该加个BOOL选项,决定是否调用IsExternalUrl(Uri uri)函数;为了改动小,可以在此函数里判断返回结果。

并且,IsHostMatch(this Uri uriBase, Uri uri)函数存在逻辑问题。

比如:

http://map.baidu.com

http://www.baidu.com

函数认为不是一个网站,但是有些情况下,还是需要作为同一个区域进行搜索的。

 

临时解决方法为:

 

string scheme = uriBase.GetLeftPart(UriPartial.Scheme);
            string hostName = uriBase.GetLeftPart(UriPartial.Authority).Substring(scheme.Length);
            hostName = hostName.TrimStart("www.".ToCharArray());

            int off = uri.Host.IndexOf(hostName, StringComparison.OrdinalIgnoreCase);
            return off > -1 ? false : true;