使用PHP cURL下载多个图像

使用PHP cURL下载多个图像,php,curl,Php,Curl,我想从一个网页(例如www.yahoo.com)下载图像,并使用将其存储在一个文件夹中 我使用file_get_contents()获取页面源代码并提取img src标记。我将这个src传递给代码。代码没有给出任何错误,但是没有下载图像。请检查代码。我不会走错方向 <?php $html = file_get_contents('www.yahoo.com'); $ptn = '/< *img[^>]*src *= *["\']?([^"\']*)/i';

我想从一个网页(例如www.yahoo.com)下载图像,并使用将其存储在一个文件夹中

我使用file_get_contents()获取页面源代码并提取img src标记。我将这个src传递给代码。代码没有给出任何错误,但是没有下载图像。请检查代码。我不会走错方向

<?php
    $html = file_get_contents('www.yahoo.com');
    $ptn = '/< *img[^>]*src *= *["\']?([^"\']*)/i';
    preg_match_all($ptn, $html, $matches, PREG_PATTERN_ORDER);
    $seq = 1;
    foreach($matches as $img)
    {
        $fp = fopen("root/Images/image_$seq.jpg", 'wb');
        $ch = curl_init ($img);
        curl_setopt($ch,CURLOPT_FILE, $fp);
        curl_setopt($ch,CURLOPT_URL, $img);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        $image = curl_exec($ch);
        curl_close($ch);
        fwrite($fp, $image);
        fclose($fp);
        $seq++;
    }
    echo "IMAGES DOWNLOADED";
?>
  • $img是图像的全部吗
  • 图像是否受保护(使用referer)

首先尝试调试

首先用雅虎的一张图片试试,
http://www.depers.nl/beeld/w100/2011/201105/20110510/anp/sport/img-100511-349.onlinebild.jpg

还有,为什么要使用file\u get\u contents和curl?用卷曲代替

  • 为cURL创建函数:
    函数simple\u cURL($url,$binary=false){设置cURL变量,返回cURL\u exec)
  • 获取yahoo.com:
    $result=simple\u curl($url);
  • 获取该模式的链接(检查匹配项是否包含完整的URL(域+目录+文件)
  • 循环每个模式匹配(不要忘记:多数组!!所以循环
    $matches[1]
  • curl二进制文件并保存:
    $image=simple\u curl($match,true);
    • $img是图像的全部吗
    • 图像是否受保护(使用referer)

    首先尝试调试

    首先用雅虎的一张图片试试,
    http://www.depers.nl/beeld/w100/2011/201105/20110510/anp/sport/img-100511-349.onlinebild.jpg

    另外,为什么要使用file\u get\u contents和curl?请改用curl

  • 为cURL创建函数:
    函数simple\u cURL($url,$binary=false){设置cURL变量,返回cURL\u exec)
  • 获取yahoo.com:
    $result=simple\u curl($url);
  • 获取该模式的链接(检查匹配项是否包含完整的URL(域+目录+文件)
  • 循环每个模式匹配(不要忘记:多数组!!所以循环
    $matches[1]
  • curl二进制文件并保存:
    $image=simple\u curl($match,true);
    • www.yahoo.com
      不是URL,
      http://www.yahoo.com/
    • $img是需要迭代的数组。
      $matches[1]
    • 您都告诉cURL写入文件并检索结果。请使用一个
    我不知道你怎么看不到错误。我会调查一下。复制、粘贴然后运行它给了我很多错误。

      foreach($matches as $img)
      
    • www.yahoo.com
      不是URL,
      http://www.yahoo.com/
    • $img是需要迭代的数组。
      $matches[1]
    • 您都告诉cURL写入文件并检索结果。请使用一个
    我不知道你怎么看不到错误。我会调查的。复制、粘贴然后运行它给了我很多错误

    foreach($matches as $img)
    
    应改为

    foreach($matches[1] as $img)
    
    顺便说一句:你应该用cURL替换文件内容,它的速度大约是cURL的3倍;)

    应改为

    foreach($matches[1] as $img)
    
    顺便说一句:你应该用cURL替换文件内容,它的速度大约是cURL的3倍;)