我正在使用Blogger API for PHP。我想從網站名稱中獲取博客ID。從其友好的URL獲取Blogger的博客ID,無需屏幕抓取
例如,http://sleeptalkinman.blogspot.com/
的博客ID爲3117168333067506122.這是可能的,因爲博客ID出現在源中,但屏幕抓取不是一個好主意!
是否可以通過API獲取它,而不是從HTML中獲取它?
我正在使用Blogger API for PHP。我想從網站名稱中獲取博客ID。從其友好的URL獲取Blogger的博客ID,無需屏幕抓取
例如,http://sleeptalkinman.blogspot.com/
的博客ID爲3117168333067506122.這是可能的,因爲博客ID出現在源中,但屏幕抓取不是一個好主意!
是否可以通過API獲取它,而不是從HTML中獲取它?
$blog = "sleeptalkinman.blogger.com";
$username = split('\.', $blog)[0];
只要你有像上面這樣的網址,就會給你你想要的。
(我發佈了一個原始的答案,但修改它使用Zend_Gdata代替)。
以下是獲取博客ID的方法。
<?php
$user = 'username';
$pass = 'password';
// I have to admit, I would normally use the autoloader
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Feed');
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'blogger', null,
Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null,
Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE');
$gdClient = new Zend_Gdata($client);
/**
* Get the blog ID
* @param string $feed URL to blog feed or blog name
* Example:
* - http://googleblog.blogspot.com/feeds/posts/default
*/
function getBlogId($gdClient, $feed)
{
// You could build the /feed/posts/default part yourself and just pass
// googleblog.blogspot.com:
// $feed = 'http://' . $feed . '/feeds/posts/default';
$query = new Zend_Gdata_Query($feed);
$feed = $gdClient->getFeed($query);
preg_match('/blog-([0-9]+)/', $feed->id->text, $match);
if (isset($match[1]))
{
return $match[1];
}
return false;
}
echo getBlogId($gdClient, 'http://sleeptalkinman.blogspot.com/feeds/posts/default');
原來的答覆
如果你想獲取信息,那麼你應該僅僅是能夠取代www.blogger.com部分而忽略blogID。例如,如果你想找到http://dailyvim.blogspot.com/所有帖子可以使用:
http://dailyvim.blogspot.com/feeds/posts/default
而不是普通的URL,http://www.blogger.com/feeds/[blogID]/posts/default
這種方法還可以用於發佈到博客上工作,所以只要經過身份驗證的用戶具有對其的寫入權限即可。不過,我還沒有能夠測試這個。
獲取博客ID
您可以從進料獲得上述使用下面的博客ID:
$content = file_get_contents('http://sleeptalkinman.blogspot.com/feeds/posts/default');
preg_match('/<id>.*blog-([0-9]+)</id>/U', $content, $match);
print $match[1]; // Prints the blog ID
獲取後的ID爲最新的帖子
你也可以從上述Feed中獲取最新帖子(這次我將使用SimpleXML代替):
$feed = simplexml_load_file('http://sleeptalkinman.blogspot.com/feeds/posts/default');
foreach ($feed->entry as $entry)
{
// I'm getting both the blog ID and post ID
preg_match('/blog-([0-9]+).*post-([0-9]+)/', $entry->id, $match);
print $match[2];
// Now you can use the following URL with the blogger API
$comment_feed_url = 'http://www.blogger.com/feeds/' . $match[1] . '/' . $match[2] . '/comments/default';
}
謝謝,但我問什麼是一個更大的問題,我想檢索特定帖子的評論feed的步驟。再舉一個例子! http://www.blogger.com/feeds/3117168333067506122/5498538184176328230/comments/default 所以真的很喜歡從第一個參數中檢索博客ID,然後發佈第二個ID。 – joobaal 2010-01-12 21:48:00
那麼,您可以輕鬆地從Feed中獲取博客ID。我使用代碼編輯了我的原始答案。 – 2010-01-12 22:26:00
是的,我可以做到這一點,但我想避免加載頁面,我只是在尋找Blogger API函數來返回它。 – joobaal 2010-01-12 22:41:20
似乎你也可以使用博客的網址來獲得評論,試試;
http://someusername.blogspot.com/feeds/comments/default
,你可以得到在類似的方式給定後,即/供稿/ XXXXXXXX /評論/默認情況下,其中xxxxxxxx是後ID的所有評論。
而且你可以按日期通過查詢字符串資格發表分鐘= 2010-03-16T00:00:00 &發表-MAX = 2010-03-24T23:59:59
作爲一個邊請注意,Blogger API可以將此Feed作爲JSON而不是XML返回,這比通過使用查詢字符串解析XML更容易處理?alt = json
噢,JSON格式在http://code.google.com/apis/gdata/docs/json.html – 2010-09-18 01:56:08
今天,最新的博客API版本是3.0。有了這個新的API,我們可以獲得資源類型爲getByUrl
的博客ID。這是用我的博客,我的API完整的例子:
https://www.googleapis.com/blogger/v3/blogs/byurl?url=http%3A%2F%2Fwww.ifaniqbal.com&key=AIzaSyDNkR52eSfObZi9BPKrTytbowOAM7Js9uY
只需按Ctrl + C這個例子和Ctrl + V到瀏覽器來測試。一個例子的回報場的是「ID」字段,這是我們想要的(在JSON)的博客ID,像這樣:
{
"kind": "blogger#blog",
"id": "7107469463017369923",
"name": "Ifan Iqbal",
"description": "Tips, Download, Resensi, Tutorial, Blog, Blogspot",
"published": "2012-02-28T23:54:48+07:00",
"updated": "2013-07-11T16:24:58+07:00",
"url": "http://www.ifaniqbal.com/",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923",
"posts": {
"totalItems": 161,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923/posts"
},
"pages": {
"totalItems": 2,
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923/pages"
},
"locale": {
"language": "in",
"country": "",
"variant": ""
}
}
中有描述這裏有一個指向文檔的鏈接:https://developers.google.com/blogger/docs /3.0/using#retrieving-a-blog-by-its-url – Dunc 2016-01-28 14:16:13
好,那你必須呼應' $ username [0]',因爲'$ username'將會是一個數組... – ceejayoz 2010-01-12 21:37:42
你是對的,我的[0]以某種方式失蹤了。編輯修復。 – KingRadical 2010-01-12 22:22:40