이 기사는 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']));
PHP에서 컬 연결을 설정하는 단계는 일반적으로 초기화, 옵션 설정, 작업 수행 및 연결 해제입니다.
$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['src']가 이미지의 실제 URL을 가져와서 file_put_contents를 통해 저장하면 끝입니다
위 내용은 이미지를 크롤링하고 로컬에 저장하는 PHP의 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!