Facebook喜欢点播内容刮刀

时间:2010-06-03 01:49:06

标签: php facebook metadata scraper

你们曾经看到FB将你在Facebook上发布的链接(状态,消息等)粘贴在链接字段中,然后显示各种元数据,图像的拇指,来自页面的各种图像来自视频相关链接(如youtube)的链接或视频缩略图。

任何想法如何复制此功能?我正在考虑几个齿轮工人甚至更好的只是javascript做xhr请求并根据正则表达式或类似的东西解析内容......任何想法?任何链接?有人已经尝试过这样做并把它包装在一个很好的课程中吗?什么? :)

谢谢!

3 个答案:

答案 0 :(得分:14)

FB从HTML中删除元标记。

即。当您输入URL时,FB显示页面标题,后跟URL(截断),然后显示< meta name =“description”>的内容。元件。

至于缩略图的选择,我想FB可能只选择那些超过一定尺寸的,即跳过按钮图形,1px间隔物等。

编辑:我不确切地知道你在寻找什么,但这里有一个PHP函数,用于从页面中抓取相关数据。
这使用了来自http://simplehtmldom.sourceforge.net/

的简单HTML DOM库

我已经看过FB是如何做到的,而且看起来刮擦是在服务器端完成的。


    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;
    }

答案 1 :(得分:0)

Facebook会在您粘贴到链接字段的页面的HTML中查看各种元信息。 titledescription是两个显而易见的,但开发人员也可以使用<link rel="image_src" href="thumbnail.jpg" />来提供首选的屏幕抓取。我猜你可以查看这些东西。如果缺少此标记,您可以始终使用website thumbnail generation服务。

答案 2 :(得分:0)

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