2010-06-03 66 views
3

你們看到過,FB將你在Facebook上發佈的鏈接(狀態,消息等)粘貼到鏈接字段中並且顯示各種元數據,圖像的大拇指,來自頁面鏈接的各種圖像或來自視頻相關鏈接的視頻縮略圖(如youtube)。Facebook喜歡點擊元內容刮板

任何想法如何複製此功能?我在想幾個gearman工人,甚至更好的只是一個xhr請求和解析基於正則表達式或類似的東西的內容......任何想法?任何鏈接?有人已經試圖做同樣的事情,並將其包裝在一個很好的課堂?什麼? :)

謝謝!

+0

c'mon球員......認真嗎?沒有人? ;) – Tobias 2010-06-07 22:21:32

+1

任何這樣的事情都需要一個自定義編寫的工具,用於每個站點。儘量避免使用'RegEx',而是使用'DOM'。嘗試從網站上查找原始數據Feed,然後再抓取他們的實際網頁。如果找不到原始數據,我強烈建議使用存儲在服務器上的靜態文件進行測試。 – drudge 2010-10-19 22:19:25

+0

不這麼認爲。我已經有一個產生與fb刮刀相同的輸出的工作原型,只有問題是可縮放...... – Tobias 2010-10-20 11:58:43

回答

14

FB從HTML中刪除元標記。

即當您輸入一個URL時,FB會顯示頁面標題,然後顯示URL(截斷),然後顯示meta name =「description」元素的內容。

至於縮略圖的選擇,我想,也許只有FB選擇那些超過一定的尺寸,即跳過按鈕圖形,1px的間隔等

編輯:我不正是你知道什麼尋找,但這裏有一個PHP功能,用於從頁面中抓取相關數據。
這將使用從http://simplehtmldom.sourceforge.net/

我有一個看看FB是怎麼做的簡單的HTML DOM庫,它看起來像刮在服務器端完成。

 

    class ScrapedInfo 
    { 
     public $url; 
     public $title; 
     public $description; 
     public $imageUrls; 
    } 

    function scrapeUrl($url) 
    { 
     $info = new ScrapedInfo(); 
     $info->url = $url; 
     $html = file_get_html($info->url); 

     //Grab the page title 
     $info->title = trim($html->find('title', 0)->plaintext); 

     //Grab the page description 
     foreach($html->find('meta') as $meta) 
       if ($meta->name == "description") 
         $info->description = trim($meta->content); 

     //Grab the image URLs 
     $imgArr = array(); 
     foreach($html->find('img') as $element) 
     { 
       $rawUrl = $element->src; 

       //Turn any relative Urls into absolutes 
       if (substr($rawUrl,0,4)!="http") 
         $imgArr[] = $url.$rawUrl; 
       else 
         $imgArr[] = $rawUrl; 
     } 
     $info->imageUrls = $imgArr; 

     return $info; 
    } 

+0

那麼你的獎金標準是什麼? – stevenroberts 2010-10-23 01:50:05

+0

好吧,你付出努力到你的答案,所以繼續並得到賞金 – TheLQ 2010-10-24 20:51:51

+0

他的觀點是人們如何回答,如果他們不知道答案是可接受的標準? – 2010-10-25 21:57:39

0

Facebook查看粘貼到鏈接字段的頁面的HTML中的各種元信息。 titledescription是兩個明顯的,但開發人員也可以使用<link rel="image_src" href="thumbnail.jpg" />來提供首選的屏幕抓圖。我想你可以檢查這些東西。如果這個標籤丟失,你總是可以使用website thumbnail generation服務。

+0

哦真的;) - 我的意思是在海量數據擁擠方面更多。他們也使用頁面內的圖片而不是截圖。 – Tobias 2010-10-20 11:57:25

+0

你認爲截圖是Tobias的什麼?它*是*一張照片! – 2010-10-20 13:17:45

+0

他們收集頁面內的所有圖像,並選擇一個作爲預覽縮略圖。他們不會生成頁面的屏幕截圖。這是一個頁面上的隨機圖片。 – Tobias 2012-05-19 14:52:24

0

正如我正在開發這樣一個項目,它並不像看起來那麼容易,編碼問題,渲染與JavaScript的內容,因此許多非語義網站的存在是我遇到的一個大問題。特別是提取視頻信息並試圖獲得自動播放行爲總是很棘手或有時不可能。您可以在http://www.embedify.me中看到演示文稿,它使用.net編寫,但它具有服務界面,因此您可以通過javascript調用它,也可以使用javascript api獲取與fb中相同的ui /行爲。