首頁  >  文章  >  後端開發  >  php爬取圖片並儲存到本機的程式碼範例

php爬取圖片並儲存到本機的程式碼範例

不言
不言轉載
2019-01-28 09:51:043944瀏覽

這篇文章帶給大家的內容是關於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 正規符合

透過查看原始碼發現我們需要的圖片標籤為8c8fc8dc4fbd6536c061a53723c76811)使用分組可以方便的使用$match['name']取到想要的部分

最後$match['src']拿到了圖片的真實url,透過file_put_contents保存,就算完成了

#

以上是php爬取圖片並儲存到本機的程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除