3

你们有没有见过,FB 会在您将其粘贴到链接字段后立即抓取您在 facebook 上发布的链接(状态、消息等),并显示各种元数据、图像的拇指、来自页面链接的各种图像或来自视频相关链接(如 youtube)的视频拇指。

任何想法如何复制此功能?我正在考虑几个齿轮工,或者甚至更好的是 javascript,它执行 xhr 请求并根据正则表达式或类似的东西解析内容......有什么想法吗?任何链接?是否有人已经尝试过这样做并将其包装在一个不错的班级中?任何事物?:)

谢谢!

4

3 回答 3

14

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;

        返回$信息;
    }

于 2010-10-22T03:20:22.827 回答
0

Facebook 查看您粘贴到链接字段的页面 HTML 中的各种元信息。titledescription是两个明显的,但开发人员也可以使用它来<link rel="image_src" href="thumbnail.jpg" />提供首选的屏幕抓图。我想你可以检查这些东西。如果缺少此标签,您可以随时使用网站缩略图生成服务。

于 2010-10-20T08:44:27.610 回答
0

当我正在开发这样一个项目时,它并不像看起来那么容易,编码问题、使用 javascript 呈现内容、存在如此多的非语义网站是我遇到的大问题之一。尤其是提取视频信息并尝试获得自动播放行为总是很棘手,有时甚至是不可能的。你可以在http://www.embedify.me看到一个演示,它是用 .net 编写的,但它有一个服务接口,所以你可以通过 javascript 调用它,也有 javascript api 来获得与中相同的 ui/behavior FB。

于 2012-04-07T11:21:41.120 回答