【发布时间】:2011-10-12 23:45:41
【问题描述】:
所以我试图从另一个网站抓取一些图片,问题是每张图片都在不同的页面上
IE:id/1、id/2、id/3 等
到目前为止,我有下面的代码,它可以从使用给定的单个 URL 中获取图像:
$returned_content = get_data('http://somedomain.com/id/1/');
但需要使上面的行变成一个数组(我猜),这样它就会从第 1 页抓取图像,然后继续在第 2 页和第 3 页等自动抓取下一张图像
function get_data($url){
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$returned_content = get_data('http://somedomain.com/id/1/');
if (preg_match_all("~http://somedomain.com/images/(.*?)\.jpg~i", $returned_content, $matches)) {
$src = 0;
foreach ($matches[1] as $key) {
if(++$src > 1) break;
$out = $key;
}
$file = 'http://somedomain.com/images/' . $out . '.jpg';
$dir = 'photos';
$imgurl = get_data($file);
file_put_contents($dir . '/' . $out . '.jpg', $imgurl);
echo 'done';
}
一如既往地感谢所有帮助并提前致谢。
【问题讨论】:
-
您确定要为此使用 PHP 吗?并不是说这不可能,而是取决于您最终想要做什么,您可能会遇到许多问题,这些问题通常可以通过半自动化更好地解决。
-
PHP 是目前我知道的唯一代码(例如 html、css),其最终结果是下载一些图像供自己日后浏览,但大约有 100 张图像,我不知道不想访问每个页面“右键单击>>另存为”。
-
您使用的是哪个操作系统?
-
为什么不对每个页面循环运行呢?如果您的代码适用于一页,它应该适用于许多页面。还是我错过了什么?
-
我一直在尝试这样做,但似乎总是收到错误“警告:为 foreach() 提供的参数无效”
标签: php image curl preg-match-all