php爬取图片并保存到本地的代码示例
内容导读
收集整理的这篇技术教程文章主要介绍了php爬取图片并保存到本地的代码示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2151字,纯文字阅读大概需要4分钟。
内容图文
本篇文章给大家带来的内容是关于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('!<img id="bigImg" src="(?<src>http.*.(?<ext>jpg|png))".*>!', $str, $m);file_put_contents('./meinv.' . $m['ext'], file_get_contents($m['src']));
效果
解释
curl 发送请求
在php中建立curl连接的步骤一般为:初始化,设置选项,执行操作,释放连接。
$ch = curl_init();curl_setopt($ch, CURLOPT, $opt);$out = curl_exec($ch);curl_close();
常用的CURLOPT
设置,更多参考文档 http://php.com/manual/zh/function.curl-setopt.php
CURLOPT_URL, string //设置url必须CURLOPT_HEADER, array //设置请求headerCURLOPT_RETURNTRANSFER, bool //为true时,以字符串返回响应,不包含headerCURLOPT_SSL_VERIFYPEER, bool //为false时,不验证https证书,用于请求https的urlCURLOPT_POST, int //为1时配合CURLOPT_POSTFIELDS使用post请求,默认使用getCURLOPT_POSTFIELDS, array //post数据数组
直接输出$output发现乱码,通过查看源码发现网页使用的是gb2312编码,用mb_convert_encoding或者iconv转换成utf-8编码输出。
preg_match 正则匹配
通过查看源码发现我们需要的图片标签为<img id="bigImg" src="https://desk-fd.zol-img.com.cn/t_s960x600c5/g5/M00/0A/03/ChMkJ1wY5y-IfHR_AALCDzHE3wwAAt3AgOmA_IAAsIn642.jpg" width="960" height="600">
正则表达式
<img id="bigImg" src="(?<src>http.*.(?<ext>jpg|png))".*>
.*匹配所有,(?<name>)使用分组可以方便的使用$match['name']取到想要的部分
最后$match['src']拿到了图片的真实url,通过file_put_contents保存,就算完成了
以上就是php爬取图片并保存到本地的代码示例的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php爬取图片并保存到本地的代码示例全部内容,希望文章能够帮你解决php爬取图片并保存到本地的代码示例所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。