DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> RSS解析器MagpieRSS筆記
RSS解析器MagpieRSS筆記
編輯:XML詳解     

MagpIERSS是一個不錯的RSS抓取/解析工具,我本來打算自己寫一個PHP的RSS解析工具,不過試了一下MagpIERSS,覺得還不錯,能滿足需要。

  順便看了看代碼,記點筆記。

  1.亂碼問題

  MagpIERSS過去時常出現亂碼問題,從0.7版本解決了這個問題

  Version0.7

  support for input and output charset encoding

  based on the work in FoF,uses iconv or mbstring if available

  0.7之後的版本可以指定輸入和輸出字符編碼,然後使用iconv或mbstring函數進行編碼轉換。這個工作在create_parser函數裡面完成的,如果兩個函數都不存在,可以在RSS_fetch.inc中讓MAGPIE_DETECT_ENCODING為false,不檢測和轉換編碼,否則就會出錯。

  一切正常的情況下,把RSS_fetch.inc中MAGPIE_OUTPUT_ENCODING定義成你需要的輸出編碼,比如UTF-8:define(‘MAGPIE_OUTPUT_ENCODING’,‘UTF-8’);就可以獲得正確的輸出結果了。

  2.抓取方法

  MagpIERSS用了Snoopy作為http客戶端來抓取RSS。這個庫比較完善,支持https,支持gzip。

  需要注意的是,Snoopy用exec命令調用curl,然後返回結果,而不是使用編譯進PHP的curl函數。默認的路徑是“/usr/bin/curl”,如果這裡沒有curl或是沒有執行權限,就可能失敗。不過只有https需要用到curl,普通的http訪問是用fsockopen的。

  同時,Snoopy可以使用代理服務器,但是MagpieRSS沒有使用,如果需要可以在RSS_fetch.inc中的_fetch_remote_file函數裡面添加$client->proxy_host和$clIEnt->proxy_port。

  3.緩存

  MagpieRSS設置了一個默認3600秒超時的緩存。在./cache下放了一堆文件,文件名是md5之後的url+MAGPIE_OUTPUT_ENCODING,格式是PHP的serialize。

  所以cache目錄要可寫。超時時間在RSS_cache.inc的var$MAX_AGE=3600;這行設置,也可以在創建cache對象的時候設置。

  綜合起來,這個庫還是不錯的,優點很多,也考慮了主機的各種情況,兼容性很好。函數形式的接口,很容易調用。不過應該先用head來取RSS的http header,根據Etag來判斷是否抓整個頁面回來,這樣效率還能再有提高。這個改動之後,cache就可以存在更長的時間,而不是一個固定的3600秒。同時我比較想把文章保存起來,以便以後用,這就需要數據庫了。

  我將來應該會基於這個東西發布一個新版本,把我想要的功能加進來。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved