C#讀取RSS源,並利用Solr索引

來源:互聯網
上載者:User

標籤:style   ar   os   使用   sp   java   檔案   on   資料   

  折磨我幾天的問題今天終於解決了,分享一下近期solr使用的一些經驗。

     本來是用nutch在爬取頁面,可是客戶需要爬取RSS,而且可以識別那些頁面是通過RSS源抓取出來的。nutch雖然內建解析RSS的外掛程式,但是有些RSS解析不了,也不好控制,更重要的抓取後和普通頁面就沒什麼太大的區別了,不能識別不能判斷是由哪個rss源抓取出來的。因為上面原因,所以就自己用C#寫了一個配合Solr抓取RSS的工程。

    一切實現好後,客戶非常滿意,我也覺得做的還不錯,可是過了一段時間後發現nutch在solrdedup時失敗了,導致nutch不能使用。下面就把rss實現的原理,和問題的產生進行介紹,解決solr和nutch這些問題不是因為非常難理解,主要是這類問題在網上很難找到。由於公司沒有外網和拷貝許可權,所有的一切只能憑我的記憶寫出來了。

 RSS+Solr的實現是利用webrequest讀取到rss源的xml格式的內容,直接裡面post方式為solr建立索引。為了達到客戶的要求,我在solr的schame裡面添加了rss和isrss欄位,rss為rss源的url地址,isrss固定為ture。由於nutch沒有這2個欄位,所以我們查詢rss只需 輸入 isrss:"true"就可以過濾掉不是rss出來的頁面。

    實現過程中主要要注意下面幾點

1.rss源並不是尾碼為xml的檔案,有些就是普通頁面response出來的,而且有些是需要登入許可權的

2.rss目前主要有2種格式,普遍的xml結構為rss/channel/item ,另外一種就是我們部落格園rss的結構feed/entry。

   裡面的標籤是固定的,可以通過不同的標籤找到solr裡面filed需要的值

3.id,digest,tstamp三個欄位是必須要的。

  上面提到nutch 運行到solrdedup時就報錯,開始我以為是solr裡面新加的2個欄位,嘗試為nutch也新增2個欄位,而且還利用nutch的靜態欄位外掛程式和額外欄位外掛程式,但是沒有用,最後我發現把solr的資料清除後居然nutch可以正常運行,我在google裡面也查了很多,但是基本沒什麼協助,還以為是solr cache的原因。今天剛好有點空,所以我找到了nutch的報錯檔案solrdeleteduplicates.java,研究發現裡面nutch去除重複是從solr直接取了id,digest,tstamp欄位,沒有判斷是否為空白就直接使用了。

  但是我寫的程式裡面digest和tsamp是沒有添加的,果然添加完這2個欄位,把所有沒有這2個欄位的資料全部補完整,nutch又可以正常運行了

4.digest是網頁的32位雜湊值,用來nutch去除重複時進行比較差異

5.solr是可以直接通過請求url對內容進行新增,修改,刪除,其中修改的格式與新增一樣

 主要核心為:xx.xx.xx.xx/solr/update?stream.body=<add><doc><field name="xx">xx</filed></doc><add>&stream.contentType=text/xm;charset=utf-8&commit=true

  如果內容有ur格式和html格式需要對其進行轉碼

6,solr的時間是GMT格式的時間,所以不要弄錯,而且rss裡面的GMT格式有些是不對的,我就遇到了很多,星期不對都會引起solr index失敗。

 

   現在資訊都還是比較齊全,搜尋還是比較方便的,但是還是有很多問題需要解決,主要是js產生頁面不能讀取,還有頁面上資訊的過濾。擷取文章的主要內容,過濾導航等其他資訊還是比較難的,目前我查到的別人是根據統計規律在進行過濾,比如導航條中間很多是用|分開的,內容裡面的空格間隔等。每個網站的html布局風格不一樣,標籤這些很難統一,百度,Google也不知道是怎麼實現的,或者它們其實也沒有實現。

  nutch還是比較強大的,但是總覺得不好維護和修改,上次編譯一下原始碼都費了很長時間,solr的查詢也是比較高效的。 可能計劃寫一個.net版本的爬蟲和搜尋,但是只是在計劃中,因為涉及到的問題太多了...

 

C#讀取RSS源,並利用Solr索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.