PHP cURL抓取网上图片

2022-12-04,,,,

  cURL的底层是由一个命令行工具实现的,用于获取远程文件或传输文件,更多的情况是用来模拟get/post表单提交。也可以用户文件上传,爬取文件,支持FTP/FTPS,HTTP/HTTPS等协议,通俗来讲,这些类型的服务器,cURL都可以抓取

  今天尝试了一下用cURL抓取无聊网网上图片。上代码。

 1 <?php
2 $url = 'http://wuliaoo.com/tuhua/';
3 $ch = curl_init();
4
5 curl_setopt($ch,CURLOPT_URL,$url);
6 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // 设置curl_exec()获取的信息以字符流形式返回
7 curl_setopt($ch,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1); // 设置CURL选项为TLS
8
9 $data = curl_exec($ch);
10 $info = curl_getinfo($ch);
11 curl_close($ch);
12 // var_dump(htmlentities($data)); 打印获取的网页源码,但是不加htmlentities函数的话会将页面输出
13 preg_match_all('/<img[^>]*src=(\'|\")(.*?)\\1[^>]*>/i',$data,$array); // 匹配正则,所有的img标签
14
15 $path = './aaimage/'; // 目录提前建好
16 foreach ($array[2] as $k => $v) {
17 if(fopen($array[2][$k],'r')){
18 ob_clean(); // 清空PHP缓存区的内容。这一步其实不确定需不需要,但是为了保险,我还是加上了。
19 $ch = curl_init();
20 curl_setopt($ch, CURLOPT_URL, $v);
21 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
22 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
23 $file = curl_exec($ch);
24 curl_close($ch);
25 $filename = pathinfo($v, PATHINFO_BASENAME); // 获取文件名和后缀
26
27 $resource = fopen($path . $filename, 'a');
28 fwrite($resource, $file);
29 fclose($resource);
30 }
31
32 }

其实我们可以把这段代码封装好。而且还可以把获取网页内容换成file_get_contents()的形式。同样可以获取网页的内容。

function down_pic($url = null){
$data = file_get_contents($url);
preg_match_all('/<img[^>]*src=(\'|\")(.*?)\\1[^>]*>/i',$data,$array); $path = './aaimage/';
foreach ($array[2] as $k => $v) {
if(fopen($array[2][$k],'r')){ $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $v);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$file = curl_exec($ch);
curl_close($ch);
$filename = pathinfo($v, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a');
fwrite($resource, $file);
fclose($resource);
} }
} // 这是获取该网站5页的图片
for($i=1;$i<=5;$i++){
$url = 'http://wuliaoo.com/tuhua/page/'.$i;
down_pic($url);
}

获取页数各个网站不是固定。

这是第一页。page不带参数或者带上参数都可以跳转到这一页。

这是第二页的URL

所以用for循环获取的话直接拼上后面的参数即可。当然,代码还有很多可以优化的地方。欢迎指正。

以上

PHP cURL抓取网上图片的相关教程结束。

《PHP cURL抓取网上图片.doc》

下载本文的Word格式文档,以方便收藏与打印。