2011-03-13 9 views
1

パブリックFacebookファンページの壁からメッセージを解析しようとしていますが、空白のページが返されます。ないURL -DOMを解析するためのDOM

$source = "http://www.facebook.com/?sk=wall&filter=2"; 
libxml_use_internal_errors(TRUE); 
$dom = new DOMDocument(); 
$dom->loadHTML($source); 
$xml = simplexml_import_dom($dom); 
libxml_use_internal_errors(FALSE); 
$message = $xml->xpath("//span[@class='messageBody']"); 

return (string)$message[0] . PHP_EOL; 

答えて

1

さらに別のアプローチは、

$posts = json_decode(
    file_get_contents('https://graph.facebook.com/swagbucks/posts') 
); 
foreach($posts->data as $post) { 
    echo $post->message, PHP_EOL; 
} 
+0

私はこのアプローチも好きです。私は貢献に感謝します。 – jennifer

+0

@jennier:このアプローチでは、ページングに対処する必要があることに注意してください。 – ifaour

+0

@ifaourは、最初のページにあるものよりも多くを必要とする場合のみです。彼女がDOM経由で投稿を取得しようとしていたことを考えると、@ jenniferはページ上にあるものより多くのことを気にかけなかったと考えることは可能です。 – Gordon

2

使用しているDOMDocument::loadHTML()方法は、HTMLパラメータなどのコンテンツを期待しています。

ここでは、あなたのURLをいくつかのHTMLコンテンツとして解釈しようとしています。リンク先のものではありません。


この方法を使用すると、ファイル上で動作するもの、またはDOMDocument::loadHTMLFile()などのremonteコンテンツを試してみることができます。

+0

+1は、私は完全にその上に見えたグラフAPIからJSONを使用することです! – alex

2

これはではなく、です。これはFacebookからデータを取得する正しい方法であり、Facebookアプリケーションの作成を避けることは明らかです。

しかし、おめでとうございますが、まだFQLを使用することができます。Graph API Explorerの下のクエリを試してみてください。以下のクエリで

、我々はFacebook Developersページの公開フィードを取得するためにstreamテーブルを照会:

SELECT message 
FROM stream 
WHERE source_id=19292868552 
AND is_hidden = 0 
AND filter_key='owner' 

それは、ページのすべての「公共」のフィードを返します。明らかに、意味のある結果を得るために、より多くのフィールドを取得する必要があるかもしれません。


あなたも、公共の記事にアクセスするための有効なaccess_tokenを提供する必要があります。続きを読むhere

+0

WOW!ありがとうございました。 – jennifer

関連する問題