你们有没有见过,FB 会在您将其粘贴到链接字段后立即抓取您在 facebook 上发布的链接(状态、消息等),并显示各种元数据、图像的拇指、来自页面链接的各种图像或来自视频相关链接(如 youtube)的视频拇指。
任何想法如何复制此功能?我正在考虑几个齿轮工,或者甚至更好的是 javascript,它执行 xhr 请求并根据正则表达式或类似的东西解析内容......有什么想法吗?任何链接?是否有人已经尝试过这样做并将其包装在一个不错的班级中?任何事物?:)
谢谢!
FB 从 HTML 中抓取元标记。
即当您输入一个 URL 时,FB 会显示页面标题,然后是 URL(截断),然后是 <meta name="description"> 元素的内容。
至于缩略图的选择,我想可能FB只选择那些超过一定尺寸的,即跳过按钮图形、1px间隔等。
编辑:我不知道你在找什么,但这是 PHP 中的一个函数,用于从页面中抓取相关数据。这使用来自http://simplehtmldom.sourceforge.net/
的简单 HTML DOM 库
我看过 FB 是如何做到的,看起来抓取是在服务器端完成的。
类 ScrapedInfo { 公共 $url; 公共 $title; 公共$描述; 公共 $imageUrls; } 函数 scrapeUrl($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 == "描述") $info->description = trim($meta->content); //获取图片地址 $imgArr = 数组(); foreach($html->find('img') as $element) { $rawUrl = $element->src; //将任何相对Urls转换为绝对Urls if (substr($rawUrl,0,4)!="http") $imgArr[] = $url.$rawUrl; 别的 $imgArr[] = $rawUrl; } $info->imageUrls = $imgArr; 返回$信息; }
Facebook 查看您粘贴到链接字段的页面 HTML 中的各种元信息。title
和description
是两个明显的,但开发人员也可以使用它来<link rel="image_src" href="thumbnail.jpg" />
提供首选的屏幕抓图。我想你可以检查这些东西。如果缺少此标签,您可以随时使用网站缩略图生成服务。
当我正在开发这样一个项目时,它并不像看起来那么容易,编码问题、使用 javascript 呈现内容、存在如此多的非语义网站是我遇到的大问题之一。尤其是提取视频信息并尝试获得自动播放行为总是很棘手,有时甚至是不可能的。你可以在http://www.embedify.me看到一个演示,它是用 .net 编写的,但它有一个服务接口,所以你可以通过 javascript 调用它,也有 javascript api 来获得与中相同的 ui/behavior FB。