NCrawler爬蟲在應用中一些問題

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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章