如何只抓取Feedburner訂閱人數顯示?

Google的Feedburner提供了API,可以讓開發者從中去抓取訂閱的數字,讓開發者可以自由運用,可以放在一些統計網站,或是將取出的數字並搭上個人的美化,讓訂閱人數圖案變得更漂亮,除了美化網站之外,也可以吸引到其他人的注意。至於API該怎麼使用呢?其實官方都有寫,只是感覺很複雜而已。

官方提供的API寫法很複雜,所以香腸去網路上找到另外比較簡單的寫法,它的運作模式是將自己的Feedburner帳號透過Google提供的API去抓取資料,得到的資料是XML格式,然後我們必須解析這個XML,將裡面要的資料抓出來就可以了。


我想最常看到運用Google Feedburner API的網站應該是部落格觀察,因為他是一個部落格統計網站,當然少不了RSS訂閱數的統計囉!如果你還不知道Feedburner是做什麼的?請參考這篇文章了解一下:如何利用FeedBurner替自己燒一個專屬的RSS Feed?

下圖是本站的部落格觀察統計頁面中的一些資料,其中有個火的圖案,就是透過API去抓出來顯示的資料值,以下圖為例,基本上抓出來的值只有「6287」,其他的數值應該是部落格觀察官方的東西。

如何只抓取Feedburner訂閱人數顯示?

前面提到,運作模式就是透過把自己的Feedburner帳號帶入API中,然後Google會回傳XML,我們必須要去解析XML,然後把需要的資料值抓出對吧?在這邊我們就使用PHP來處理,並搭配WordPress顯示在部落格上面。

抓取Feedburner訂閱數

首先將以下語法複製並貼到WordPress佈景資料夾內的functions.php,如果沒有這個檔案請自行建立,然後放入以下語法。如果已經有這個檔案,放入語法的時候請小心檔案內原本的結構!

<?php
function getRssCount($rss_link) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $rss_link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$result = curl_exec($ch);
curl_close($ch);
$result = new SimpleXMLElement($result);
$feedburner = $result->feed->entry['circulation'];
echo $feedburner;
}
?>

以上語法是一個函式,這個函式會接收使用者的RSS來源,然後將RSS位置帶入API中,接著Google會產生XML結構的資料回傳,然後再透過PHP的SimpleXMLElement去做解析的動作,將其中的值抓出並顯示。

顯示Feedburner訂閱數

如果要將訂閱人數顯示到側邊欄,請開啟WordPress佈景檔案內的sidebar.php,將以下語法放入就可以了,放入的時候也要注意架構問題,放錯了,會讓網頁顯示亂七八糟 喔!

您的RSS位置:請放入RSS網址,例如:「http://feeds.feedburner.com/s9011514

<?php getRssCount('您的RSS位置'); ?>

以上語法顯示的就只是會一個數字而已(沒有超連結),所以這個數字您可以自由運用,可以透過CSS美化或是在數字的前後加入一些文字,等等的,像香腸的做法就是如下圖所示,加文字與圖片,讓數字看起來更生動,也可以吸引大家的注意去點擊並訂閱。

如何只抓取Feedburner訂閱人數顯示?

以上的語法是在這邊找到的,是透過PHP的CURL去處理,可能有些主機會無法運作,那可能要再找其他的方式去解析的樣子,網路上有很多種,我網站目前使用這種方法是可以正常運作的,所以其他模式我就不太清楚了,問我也不會有解答,如果以上香腸提供的模式無法使用,可以去Google大神那邊找找看囉!補:這邊好像有另外一種模式。

還有,以上這種是每次開網頁都會去存取一次,所以在系統效能上、網頁開啟速度上可能會比較慢,在網路上有看到好像可以把資料值快取下來,可是我不太清楚怎去做處理,因為他好像每日下午都會抓不到資料,因此訂閱數會顯示0,如果你有解決方法也歡迎您不吝分享一下喔!