ホームページ >バックエンド開発 >PHPチュートリアル >画像をクロールしてローカルに保存するための PHP のコード例

画像をクロールしてローカルに保存するための PHP のコード例

不言
不言転載
2019-01-28 09:51:043979ブラウズ

この記事では、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 に文字が見つかりました。ソース コードを確認すると、Web ページで gb2312 エンコーディングが使用されていることがわかりました。mb_convert_encoding または iconv を使用して、出力用に utf-8 エンコーディングに変換してください。

preg_match 通常の一致

ソース コードを確認すると、必要なイメージ タグは 2846d2c36b0ae8985f1c2cef76da3903

正規表現

<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>

.* すべて一致、(?8a11bc632ea32a57b3e3693c7987c420) グループ化を使用すると、$match['name'] を使用して目的の部分を簡単に取得できます

最後に $match ['src'] 画像の実際の URL を取得し、完了していても file_put_contents を通じて保存します


以上が画像をクロールしてローカルに保存するための PHP のコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。