Ekran kazıma olmadan onun dostu url Bir Blogger blog kimliği elde

4 Cevap php

Im Blogger API kullanarak: http://code.google.com/apis/blogger/docs/1.0/developers_guide_php.html

Ne yapmak isteyen sadece siteler örneğin, sleeptalkinman.blogger.com isim dan blog kimliği elde edilir

Blog kimliği kaynağında görünür ama ekran kazıma iyi bir fikir değil gibi bu mümkün!

Herhangi bir tavsiye takdir! PHP kullanarak Im.

Clafification için ben tekrar sleepwalkingman arasında örneğin. Kimliği yerine html onu kazıma API aracılığıyla elde eğer bilmek mi 3117168333067506122 olan blog kimliği gerektirir.

4 Cevap

(Ben orijinal yanıt gönderdi, ancak bunun yerine Zend_Gdata kullanmak için modifiye etmişti).

Burada blog kimliği alma için bir yöntemdir.

<?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');

Original answer

Eğer bilgi almak için çalışıyorsanız, o zaman sadece www.blogger.com parçayı değiştirin ve blogID görmezden gerekir. Örneğin, gelen tüm mesajları bulmaya çalışıyorsanız http://dailyvim.blogspot.com/ kullanmak istiyorsunuz:

http://dailyvim.blogspot.com/feeds/posts/default

Bunun yerine, normal URL, http://www.blogger.com/feeds/ [blogID] / ileti / default

Bu yöntem aynı zamanda çok uzun doğrulanmış kullanıcı kendisine yazma erişimi gibi, blogda yayınlamak için çalışabilir. Gerçi bu test mümkün olmamıştır.

Getting the blog ID

Aşağıdaki kullanarak yukarıdaki yemden blog kimliği alabilirsiniz:

$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

Getting post IDs for latest posts

Ayrıca yukarıda yem (ben yerine SimpleXML kullanacağız bu kez) en son mesaj alabilirsiniz:

$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';
}

Bugün, yeni blogger API sürümü 3.0 olduğunu. Yeni API ile, biz kaynak türüne getByUrl ile günlüğü kimliği alabilirsiniz. Bu benim blog ve benim API kullanarak tam bir örnek:

https://www.googleapis.com/blogger/v3/blogs/byurl?url=http%3A%2F%2Fwww.ifaniqbal.com&key=AIzaSyDNkR52eSfObZi9BPKrTytbowOAM7Js9uY

Sadece Ctrl + C tarayıcınıza örnek ve Ctrl + V olduğunu test etmek için. Örnegin dönüş alanında biri böyle (JSON) istediğimiz blog kimliği, hangi, 'id' alandır:

{
"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": ""
}

}

$blog = "sleeptalkinman.blogger.com";

$username = split('\.', $blog)[0];

sürece yukarıdaki gibi URL gibi, sonra ne size vermelidir.

Eğer denemek, hem de yorumlarını almak için blogunuzun url kullanabilirsiniz görünüyor;

http://someusername.blogspot.com/feeds/comments/default

Ve size, yani / xxxxxxxx sonrası kimliği / xxxxxxxx / comments / default, beslemeleri, benzer bir şekilde, belirli bir yazı için tüm yorumları alabilirsiniz.

? 00:00 ve yayınlanan-max = 2010-03-24T23: Ve sorgu dizesi yayınlanan-min = 2010-03-16T00 kullanarak tarihe göre geçerli olabilir 59:59

Bir yan not olarak, Blogger API ben sorgu dizesi kullanarak XML ayrıştırma daha uğraşmak daha kolay yol bulundu JSON yerine XML olarak yem dönebilirsiniz? Alt = json