2011-09-17 90 views
1

我想獲取有關喜歡的頁面的信息,因爲我想點喜歡我的網站的帖子。我決定通過抓取頁面來完成它,並將每個帖子id的喜歡存儲在db中,然後我可以使用db命令。 (我可以運行該「刷屏」每隔一小時或類似的東西更新的結果)PHP:獲取Facebook的URL喜歡

我做了以下內容:

$url = "http://www.mydomain.com"; 
$html = file_get_contents($url); 
$dom= new domDocument; 
$dom->loadHTML($html); 

而且我收到以下錯誤:

Notice: DOMDocument::loadHTML() [domdocument.loadhtml]: Namespace prefix fb is not defined in Entity, line: 36 in C:\xampp\htdocs\page.php on line 13 

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag fb:like invalid in Entity, line: 36 in C:\xampp\htdocs\page.php on line 13 

不知怎的,喜歡沒有顯示?另外,如果我做這樣的事情:

$url = "http://www.mydomain.com"; 
$html = file_get_contents($url); 
echo $html; 
preg_match_all(
    '/<div id="LikePluginPagelet".*?>.*?<\/div>/s', 
    $html, 
    $posts, 
    PREG_SET_ORDER 
); 

print_r($posts) 

第一個「迴響」真實地反映了整個頁面,但隨後的print_r只是表明Array ()

有沒有可能是有些東西是不能通過PHP被抓住?下面是一個示例頁面:http://developers.facebook.com/docs/reference/plugins/like/

您可以看到,在類似的位置以及喜歡的數量中,div的id爲「LikePluginPagelet」,但PHP不會獲取其中的內容。

更新:

你可以使代碼將被刮的頁面得到500K數量從喜歡這裏的? http://developers.facebook.com/docs/reference/plugins/like/或者任何其他包含許多喜歡的頁面,如果我能得到,我也可以在我的代碼中使用它。

謝謝!

回答

1

你不能找到這些元素(如框)在你的file_get_contents得到的HTML的副本,因爲這些元素是用JavaScript創建。因此,您需要頁面的最終DOM才能以這種方式獲取計數。使用PHP,這是不可能的。

但是,您可以做的是收集所有有問題的URL,並在Facebook API上運行它們 - 即使不需要任何訪問令牌/等,您也可以非常輕鬆地獲得這些內容。 請求看起來像這個:

https://graph.facebook.com/?ids=<URL> 
+0

完美!謝謝! – luqita