2012-02-28 61 views
-5

我有我的网站上的网址输入类型文本。通过发布此url字段的值,我想从该特定网址获取所有可能的图像(如果存在),因为这发生在更新状态textarea的http://facebook.com。那么在PHP中这将是什么代码?从php中的任何url获取所有图像?

谢谢。

+0

任何理由致力于这个明确的和具有挑战性的问题吗?我认为没有人能够回答这个具有挑战性的问题。 – raj 2012-02-28 10:06:22

+1

这篇文章被拒绝投票的原因是你没有给出任何迹象表明你甚至试图自己尝试这样做。如果您在使用某些代码时遇到特定问题,请将其发布,但不要期望社区能够帮助您完成一整段代码。为了启动你,你应该看看使用PHP的cUrl和正则表达式函数。此外,当你在社区(声誉)证明你自己时,人们可能更愿意提供帮助,而不是仅仅请求某人为你提供代码。 – MichaelH 2012-02-28 10:11:43

+0

从url获取html并使用html/dom解析器 – scibuff 2012-02-28 10:12:38

回答

3

的Facebook具有OpenGraph协议。您在Facebook上链接的很多网站都不会呈现图片。这是因为og标签没有配置。为了真正实现抓取的图像的任何重要结果,将需要非常大量的代码。

有,只是不意味着要使用这种方式,如间隔图像,跟踪图像等众多图像...当你把所有的图像标签从一个网站,你会得到一个编号这些图像是的大部分只是死角。

像往常一样,有多种方法可以解决这个问题。他们都从获取网址的来源开始。 cURL是我的首选方法来实现这一点。

从那里,你需要解析源中的信息,找到图片的来源。这可以通过regular expressions (regex)完成,或者我的首选方法是使用PHP中的DOMDocument类。

一个简单的例子来如何处理从使用DOMDocument类是如下图像标记获取源网址:

// Load your HTML result into $response prior to here. 
// Additionally, ensure that you have the root url for the 
//  page loaded into $base_url. 
$document = new DOMDocument(); 
$document->loadHTML($response); 

$images = array(); 

// For all found img tags 
foreach($document->getElementsByTagName('img') as $img) { 
    // Extract what we want 
    $image = array(
     // Here we take the img tag, get the src attribute 
     //  we then run it through a function to ensure that it is not a 
     //  relative url. 
     // The make_absolute() function will not be covered in this snippet. 
     'src' => make_absolute($img->getAttribute('src'), $base_url), 
    ); 

    // Skip images without src 
    if(! $image['src']) 
     continue; 

    // Add to collection. Use src as key to prevent duplicates. 
    $images[$image['src']] = $image; 
}