2

PHP を使用して Facebook の Web ページをダウンロードしたいと考えています。stream_context_create と一緒に file_get_contents を試しました。カールも試しました。しかし、Facebook は次のメッセージのみを返します。

ブラウザを更新する Facebook でサポートされていない Web ブラウザを使用しています。エクスペリエンスを向上させるには、次のいずれかのサイトにアクセスして、お好みのブラウザーの最新バージョンを入手してください。

何か不足していますか?

カールコードは次のとおりです。

       $url="https://www.facebook.com/media/set/?set=a.189662541197403.1073741845.188398434657147&type=1&l=a8755a774e";
        $custom_headers = array();
        $custom_headers[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        $custom_headers[] = "Pragma: no-cache";
        $custom_headers[] = "Cache-Control: no-cache";
        $custom_headers[] = "Accept-Language: en-us;q=0.7,en;q=0.3";
        $custom_headers[] = "Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7";

        $ch = curl_init();
        $useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1";
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent); // set user agent
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $custom_headers);

        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,20);
        curl_setopt($ch, CURLOPT_TIMEOUT, 40); //timeout in seconds

        $txResult = curl_exec($ch);

        $statuscode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        print "$txResult";
4

2 に答える 2

2

facebook Api には、fb データに関するいくつかの制限事項があります。

スクラップ Facebook ページが必要な場合は、ページをカールする前に、すべての Javascript がロードされるまで待つ必要があります。

これを行うには、ヘッドレス ブラウザ エンジンを使用する必要があります。cURL と wget は HTTP ライブラリです。HTTP を話し、ドキュメントを String としてダウンロードします。ページが AJAX または JS を実行していることを理解するのに役立つ DOM または JavaScript エンジンの概念がありません。したがって、HTML をダウンロードするには、DOM を解析して JS を実行することにより、ブラウザーのように動作するものが必要です。Mozilla エンジンを使用するhttp://simile.mit.edu/wiki/Crowbarをお勧めします。js が実行されると、必要なコンテンツを簡単に破棄できます

これがあなたにとって役立つことを願っています:)

于 2013-09-20T09:23:56.200 に答える