使用PHP cURL下载多个图像
我想从一个网页(例如www.yahoo.com)下载图像,并使用将其存储在一个文件夹中 我使用file_get_contents()获取页面源代码并提取img src标记。我将这个src传递给代码。代码没有给出任何错误,但是没有下载图像。请检查代码。我不会走错方向使用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';
<?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倍;)