【问题标题】:Scrape a website URL to get the path of an image抓取网站 URL 以获取图像的路径
【发布时间】:2010-07-26 13:58:18
【问题描述】:

我正在编写一个简单的 php 脚本,该脚本将构建我在 Facebook 粉丝页面上拥有的相册列表。

Facebook 提供了 Graph API,它为我提供了一个不错的专辑列表,但它们不再提供默认专辑图片的路径。

我想编写一个 PHP 脚本,通过 curl 加载专辑 url,并以某种方式获取包含缩略图的表中第一个图像的路径。这将是第一个具有“UIPhotoGrid_Image”类的 img 标签的“src”值。

包含好东西的布局代码块如下所示:

<div id="album_container">
    <div class="UIPhotoGrid_Container UIPhotoGrid_DefaultPadding">
        <table class="UIPhotoGrid_Table" cellpadding="0" cellspacing="0">
            <tr>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004658&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883027272_20785087272_5004658_704231_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004659&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883032272_20785087272_5004659_6158094_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
                <td class="UIPhotoGrid_TableCell">
                    <a class="UIPhotoGrid_PhotoLink clearfix" href="http://www.facebook.com/photo.php?pid=5004660&amp;id=20785087272"><img class="UIPhotoGrid_Image img" src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc4/hs080.snc4/35354_422883037272_20785087272_5004660_1787119_s.jpg" onload="this.fb_loaded = true;" /></a>
                </td>
            </tr>
        </table>
    </div>
</div>

遗憾的是,这超出了我目前的编码能力......有什么想法吗?

【问题讨论】:

    标签: php curl scrape


    【解决方案1】:

    您可以使用phpsimpledom 使用jQuery 样式语法来获取路径。

    注意:Facebook 可能有多个图像集群,因此照片的 URL 可能会随着时间而改变。

    【讨论】:

      【解决方案2】:

      你有几种可能:

      1) 优雅的,你从你的 html 样本中创建一个 dom 树 并提取你的标签

      2) 不太优雅但高效,您可以使用正则表达式来提取该信息

      【讨论】:

        【解决方案3】:

        您可以使用

        将网站源拉入字符串
           $url = “http://www.foo.com”;
           $str = file_get_contents($url);
        

        如果没有适合你需要的正则表达式,我只能说在以前的经验中我使用了很多条件语句并且严重依赖 substr(),但这可能并不明智。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多