Facebook喜欢点击元内容刮板

问题描述:

你们看到过,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

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

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

正如我正在开发这样一个项目,它并不像看起来那么容易,编码问题,渲染与JavaScript的内容,因此许多非语义网站的存在是我遇到的一个大问题。特别是提取视频信息并试图获得自动播放行为总是很棘手或有时不可能。您可以在http://www.embedify.me中看到演示文稿,它使用.net编写,但它具有服务界面,因此您可以通过javascript调用它,也可以使用javascript api获取与fb中相同的ui /行为。