我在网站上输入了url的文本类型。通过发布此url字段的值,我想从该特定URL获取所有可能的图像(如果存在),因为这发生在更新状态textarea的http://facebook.com中。那么php中的代码是什么?
感谢。
答案 0 :(得分:3)
Facebook拥有OpenGraph协议。您将在Facebook上链接的许多网站都不会呈现图像。这是因为没有og
标签的配置。需要非常大量的代码才能真正实现已爬网映像的任何重要结果。
有许多图像不适合使用这种方式,如间隔图像,跟踪图像等...当您从网站上提取所有图像标记时,您将获得大多数这些图像只是死空间。
与往常一样,有多种方法可以解决这个问题。他们都从获取网址的来源开始。 cURL是我实现此目标的首选方法。
从那里你需要解析源中的信息以找到图像的来源。这可以使用regular expressions (regex)完成,或者我首选的方法是在PHP中使用DOMDocument类。
关于如何使用DOMDocument类从图像标记获取源URL的简短示例如下:
// 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;
}