如何使用php下载此类文件?

时间:2014-02-07 16:46:44

标签: php web-scraping simple-html-dom

所以,我正在尝试从picjumbo.com网站自动下载图像。所以大多数事情都像找到img src并找到它的图像等。但是当我尝试下载图像时,我得到的只是一个html文件(用notepad ++打开那些文件来查看它。。如何在加载该页面后下载该文件?我把我的代码放在下面。除了获得最终图像外,一切正常! :(

如何下​​载该图片? 文件下载页面:http://picjumbo.com/download/?d=IMG_3642.jpg 如何在页面加载后保存该图像?

谢谢!

<?php

include("simple_html_dom.php");

$file = "http://picjumbo.com/";


$files = file_get_contents($file);
$html = new simple_html_dom();  
$html->load($files);  


foreach($html->find('img[class=image]') as $element){
    $img_src = explode('/',$element->src);
    $img_src  = explode('-',$img_src[5]);
    $img = $img_src[0];
    $url = 'http://picjumbo.com/download?d='.$img.'.jpg';
    copy($url, 'images/'.$img); 
}

2 个答案:

答案 0 :(得分:1)

网址重定向到使用Javascript开始单独下载的网页。如果你观察浏览器开发者工具的网络选项卡中发生的事情,你会看到图像的实际网址是:

http://picjumbo.com/wp-content/themes/picjumbofree/run.php?download&d=$img.jpg

答案 1 :(得分:0)

当您尝试下载该链接而不是图像时,您获取HTML页面的原因是因为该页面是HTML页面,而不是图像。如果单击它,它将转到HTML页面而不是图像。现在,一旦加载了该页面,它就会重定向您使用HTML代码的第12行下载图像:

<meta http-equiv="refresh" content="0; url=http://picjumbo.com/wp-content/themes/picjumbofree/run.php?download&d=IMG_3642.jpg">

所以URL图像是这样的:

http://picjumbo.com/wp-content/themes/picjumbofree/run.php?download&d=IMG_3642.jpg

要下载此图片,您必须将此HTML页面收集到变量中,并以某种方式解析它以从中获取URL,然后使用file_get_contents()下载图像。要解析这一点,您可以使用类似SimpleHTMLDOM的内容来读取它,或者因为您只是在查找一个标记,如果它在文档中一致显示,您可以只拉出第12行然后使用一些获取网址的广告素材substr()