3

FBがFacebookに投稿したリンク(ステータス、メッセージなど)をリンクフィールドに貼り付けた直後にライブでスクレイプし、さまざまなメタデータ、画像の親指、ページリンクからのさまざまな画像を表示するのを見たことがあるでしょう。ビデオ関連のリンク(youtubeなど)からのビデオサム。

この関数をどのようにコピーするかについてのアイデアはありますか?私はカップルのギアマンワーカー、またはxhrリクエストを実行し、正規表現または類似のものに基づいてコンテンツを解析するjavascriptだけを考えています...何かアイデアはありますか?リンクはありますか?誰かがすでに同じことをしようとして、それを素敵なクラスに包みましたか?なんでも?:)

ありがとう!

4

3 に答える 3

14

FBはHTMLからメタタグを取得します。

つまり、URLを入力すると、FBはページタイトル、URL(切り捨て)、<meta name="description">要素の内容を表示します。

サムネイルの選択に関しては、おそらくFBは特定の寸法を超えるもの、つまりボタンのグラフィックや1pxのスペーサーなどをスキップするものだけを選択すると思います。

編集:あなたが何を探しているのか正確にはわかりませんが、ページから関連データをスクレイピングするためのPHPの関数があります。これは、 http:
//simplehtmldom.sourceforge.net/の単純なHTMLDOMライブラリを使用します。

FBがどのようにそれを行うかを見てきましたが、スクレイピングはサーバー側で行われているようです。

    クラスScrapedInfo
    {{
        public $ url;
        public $ title;
        public $ description;
        public $ imageUrls;
    }

    関数scrapUrl($ url)
    {{
        $ info = new ScrapedInfo();
        $ info-> url = $ url;
        $ html = file_get_html($ info-> url);

        //ページタイトルを取得します
        $ info-> title = Trim($ html-> find('title'、0)-> plaintext);

        //ページの説明を取得します
        foreach($ html-> find('meta')as $ meta)
                if($ meta-> name == "description")
                        $ info-> description = Trim($ meta-> content);

        //画像のURLを取得します
        $ imgArr = array();
        foreach($ html-> find('img')as $ element)
        {{
                $ rawUrl = $ element-> src;

                //相対URLを絶対URLに変換します
                if(substr($ rawUrl、0,4)!= "http")
                        $ imgArr [] =$url。$rawUrl;
                そうしないと
                        $ imgArr [] = $ rawUrl;
        }
        $ info-> imageUrls = $ imgArr;

        $infoを返します。
    }

于 2010-10-22T03:20:22.827 に答える
0

Facebook は、リンク フィールドに貼り付けたページの HTML 内のさまざまなメタ情報を調べます。titleとは 2 つのdescription明白なものですが、開発者は<link rel="image_src" href="thumbnail.jpg" />好みのスクリーングラブを提供するために使用することもできます。これらのことを確認できると思います。このタグがない場合は、いつでもWeb サイトのサムネイル生成サービスを使用できます。

于 2010-10-20T08:44:27.610 に答える
0

私はそのようなプロジェクトを開発しているので、エンコードの問題、javascript を使用したコンテンツのレンダリング、非常に多くの非セマンティック Web サイトの存在は、私が遭遇した大きな問題の 1 つです。特に、ビデオ情報を抽出して自動再生動作を取得しようとすることは、常に注意が必要であり、場合によっては不可能です。http://www.embedify.meでデモを見ることができます。これは .net で書かれていますが、サービス インターフェイスを備えているため、javascript 経由で呼び出すことができます。 fb。

于 2012-04-07T11:21:41.120 に答える