首页 > 后端开发 > php教程 > php爬取图片并保存到本地的代码示例

php爬取图片并保存到本地的代码示例

不言
发布: 2023-04-04 21:26:01
转载
3988 人浏览过

本篇文章给大家带来的内容是关于php爬取图片并保存到本地的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

通过一个简单的例子复习一下几个php函数的用法

用到的函数或知识点

  • curl 发送网络请求

  • preg_match 正则匹配

代码

$url     = 'http://desk.zol.com.cn/bizhi/7386_91671_2.html';
$headers = [
    'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
];
$ch      = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, $headers);
$output = curl_exec($ch);
curl_close($ch);
$str = mb_convert_encoding($output, 'utf-8', 'gb2312');
//或$str = iconv('gb2312//IGNORE', 'utf-8', $output);

preg_match(&#39;!<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>!&#39;, $str, $m);
file_put_contents(&#39;./meinv.&#39; . $m[&#39;ext&#39;], file_get_contents($m[&#39;src&#39;]));
登录后复制

效果

php爬取图片并保存到本地的代码示例

解释

curl 发送请求

在php中建立curl连接的步骤一般为:初始化,设置选项,执行操作,释放连接。

$ch = curl_init();
curl_setopt($ch, CURLOPT, $opt);
$out = curl_exec($ch);
curl_close();
登录后复制

常用的CURLOPT设置,更多参考文档 http://php.net/manual/zh/function.curl-setopt.php

CURLOPT_URL, string //设置url必须
CURLOPT_HEADER, array //设置请求header
CURLOPT_RETURNTRANSFER, bool //为true时,以字符串返回响应,不包含header
CURLOPT_SSL_VERIFYPEER, bool //为false时,不验证https证书,用于请求https的url
CURLOPT_POST, int //为1时配合CURLOPT_POSTFIELDS使用post请求,默认使用get
CURLOPT_POSTFIELDS, array //post数据数组
登录后复制

直接输出$output发现乱码,通过查看源码发现网页使用的是gb2312编码,用mb_convert_encoding或者iconv转换成utf-8编码输出。

preg_match 正则匹配

通过查看源码发现我们需要的图片标签为

正则表达式

<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>
登录后复制

.*匹配所有,(?)使用分组可以方便的使用$match['name']取到想要的部分

最后$match['src']拿到了图片的真实url,通过file_put_contents保存,就算完成了


以上是php爬取图片并保存到本地的代码示例的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
php
来源:cnblogs.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板