Facebook喜欢点击元内容刮板
你们看到过,FB将你在Facebook上发布的链接(状态,消息等)粘贴到链接字段中并且显示各种元数据,图像的大拇指,来自页面链接的各种图像或来自视频相关链接的视频缩略图(如youtube)。Facebook喜欢点击元内容刮板
任何想法如何复制此功能?我在想几个gearman工人,甚至更好的只是一个xhr请求和解析基于正则表达式或类似的东西的内容......任何想法?任何链接?有人已经试图做同样的事情,并将其包装在一个很好的课堂?什么? :)
谢谢!
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; }
那么你的奖金标准是什么? – stevenroberts 2010-10-23 01:50:05
好吧,你付出努力到你的答案,所以继续并得到赏金 – TheLQ 2010-10-24 20:51:51
他的观点是人们如何回答,如果他们不知道答案是可接受的标准? – 2010-10-25 21:57:39
Facebook查看粘贴到链接字段的页面的HTML中的各种元信息。 title
和description
是两个明显的,但开发人员也可以使用<link rel="image_src" href="thumbnail.jpg" />
来提供首选的屏幕抓图。我想你可以检查这些东西。如果这个标签丢失,你总是可以使用website thumbnail generation服务。
正如我正在开发这样一个项目,它并不像看起来那么容易,编码问题,渲染与JavaScript的内容,因此许多非语义网站的存在是我遇到的一个大问题。特别是提取视频信息并试图获得自动播放行为总是很棘手或有时不可能。您可以在http://www.embedify.me中看到演示文稿,它使用.net编写,但它具有服务界面,因此您可以通过javascript调用它,也可以使用javascript api获取与fb中相同的ui /行为。
c'mon球员......认真吗?没有人? ;) – Tobias 2010-06-07 22:21:32
任何这样的事情都需要一个自定义编写的工具,用于每个站点。尽量避免使用'RegEx',而是使用'DOM'。尝试从网站上查找原始数据Feed,然后再抓取他们的实际网页。如果找不到原始数据,我强烈建议使用存储在服务器上的静态文件进行测试。 – drudge 2010-10-19 22:19:25
不这么认为。我已经有一个产生与fb刮刀相同的输出的工作原型,只有问题是可缩放...... – Tobias 2010-10-20 11:58:43